From f142e4ede72853aaa7d306bc79b099caed45769b Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Tue, 29 Sep 2020 07:07:45 -0400 Subject: [PATCH] tests/acpi: drop unnecessary files The last pull added a ton of useless files by mistake. Drop them all. Fixes: 0ed93f4c05896 ("update golden master DSDT binary table blobs for q35") Signed-off-by: Michael S. Tsirkin --- tests/.vhost-user-test.c.swo | Bin 16384 -> 0 bytes tests/Makefile.include.orig | 1012 ----- tests/Makefile.orig | 569 --- tests/bios-tables-test.c.orig | 925 ----- tests/data/acpi/diff-aml.sh | 0 tests/data/acpi/disassemle-aml.py | 21 - tests/data/acpi/microvm/APIC.dsl | 56 - tests/data/acpi/microvm/DSDT.dsl | 121 - tests/data/acpi/microvm/FACP.dsl | 196 - tests/data/acpi/pc/APIC.acpihmat.dsl | 112 - tests/data/acpi/pc/APIC.bridge | Bin 120 -> 0 bytes tests/data/acpi/pc/APIC.bridge.dsl | 104 - tests/data/acpi/pc/APIC.cphp.dsl | 146 - tests/data/acpi/pc/APIC.dimmpxm.dsl | 129 - tests/data/acpi/pc/APIC.dsl | 104 - tests/data/acpi/pc/APIC.hpbridge | Bin 120 -> 0 bytes tests/data/acpi/pc/APIC.ipmikcs | Bin 120 -> 0 bytes tests/data/acpi/pc/APIC.ipmikcs.dsl | 104 - tests/data/acpi/pc/APIC.memhp | Bin 120 -> 0 bytes tests/data/acpi/pc/APIC.memhp.dsl | 104 - tests/data/acpi/pc/APIC.numamem | Bin 120 -> 0 bytes tests/data/acpi/pc/APIC.numamem.dsl | 104 - tests/data/acpi/pc/APIC.roothp | Bin 120 -> 0 bytes tests/data/acpi/pc/DSDT.acpihmat.dsl | 1619 -------- tests/data/acpi/pc/DSDT.bridge.dsl | 1800 --------- tests/data/acpi/pc/DSDT.cphp.dsl | 1466 ------- tests/data/acpi/pc/DSDT.dimmpxm.dsl | 1719 -------- tests/data/acpi/pc/DSDT.dsl | 1407 ------- tests/data/acpi/pc/DSDT.ipmikcs.dsl | 1337 ------- tests/data/acpi/pc/DSDT.memhp.dsl | 1625 -------- tests/data/acpi/pc/DSDT.numamem.dsl | 1321 ------ tests/data/acpi/pc/FACP.acpihmat | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.acpihmat.dsl | 99 - tests/data/acpi/pc/FACP.bridge | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.bridge.dsl | 99 - tests/data/acpi/pc/FACP.cphp | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.cphp.dsl | 99 - tests/data/acpi/pc/FACP.dimmpxm | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.dimmpxm.dsl | 99 - tests/data/acpi/pc/FACP.dsl | 99 - tests/data/acpi/pc/FACP.hpbridge | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.ipmikcs | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.ipmikcs.dsl | 99 - tests/data/acpi/pc/FACP.memhp | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.memhp.dsl | 99 - tests/data/acpi/pc/FACP.numamem | Bin 116 -> 0 bytes tests/data/acpi/pc/FACP.numamem.dsl | 99 - tests/data/acpi/pc/FACP.roothp | Bin 116 -> 0 bytes tests/data/acpi/pc/FACS.acpihmat | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.acpihmat.dsl | 32 - tests/data/acpi/pc/FACS.bridge | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.bridge.dsl | 32 - tests/data/acpi/pc/FACS.cphp | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.cphp.dsl | 32 - tests/data/acpi/pc/FACS.dimmpxm | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.dimmpxm.dsl | 32 - tests/data/acpi/pc/FACS.dsl | 32 - tests/data/acpi/pc/FACS.hpbridge | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.ipmikcs | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.ipmikcs.dsl | 32 - tests/data/acpi/pc/FACS.memhp | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.memhp.dsl | 32 - tests/data/acpi/pc/FACS.numamem | Bin 64 -> 0 bytes tests/data/acpi/pc/FACS.numamem.dsl | 32 - tests/data/acpi/pc/FACS.roothp | Bin 64 -> 0 bytes tests/data/acpi/pc/HMAT.acpihmat.dsl | 132 - tests/data/acpi/pc/HMAT.dsl | 132 - tests/data/acpi/pc/HPET.acpihmat | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.acpihmat.dsl | 43 - tests/data/acpi/pc/HPET.bridge | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.bridge.dsl | 43 - tests/data/acpi/pc/HPET.cphp | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.cphp.dsl | 43 - tests/data/acpi/pc/HPET.dimmpxm | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.dimmpxm.dsl | 43 - tests/data/acpi/pc/HPET.dsl | 43 - tests/data/acpi/pc/HPET.hpbridge | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.ipmikcs | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.ipmikcs.dsl | 43 - tests/data/acpi/pc/HPET.memhp | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.memhp.dsl | 43 - tests/data/acpi/pc/HPET.numamem | Bin 56 -> 0 bytes tests/data/acpi/pc/HPET.numamem.dsl | 43 - tests/data/acpi/pc/HPET.roothp | Bin 56 -> 0 bytes tests/data/acpi/pc/NFIT.dimmpxm.dsl | 115 - tests/data/acpi/pc/NFIT.dsl | 115 - tests/data/acpi/pc/SLIT.cphp.dsl | 31 - tests/data/acpi/pc/SLIT.dsl | 31 - tests/data/acpi/pc/SLIT.memhp.dsl | 31 - tests/data/acpi/pc/SRAT.acpihmat.dsl | 137 - tests/data/acpi/pc/SRAT.cphp.dsl | 168 - tests/data/acpi/pc/SRAT.dimmpxm.dsl | 194 - tests/data/acpi/pc/SRAT.dsl | 108 - tests/data/acpi/pc/SRAT.memhp.dsl | 125 - tests/data/acpi/pc/SRAT.numamem.dsl | 108 - tests/data/acpi/pc/SSDT.dsl | 205 - tests/data/acpi/pc/WAET.acpihmat | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.acpihmat.dsl | 31 - tests/data/acpi/pc/WAET.bridge | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.bridge.dsl | 31 - tests/data/acpi/pc/WAET.cphp | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.cphp.dsl | 31 - tests/data/acpi/pc/WAET.dimmpxm | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.dimmpxm.dsl | 31 - tests/data/acpi/pc/WAET.dsl | 31 - tests/data/acpi/pc/WAET.hpbridge | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.ipmikcs | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.ipmikcs.dsl | 31 - tests/data/acpi/pc/WAET.memhp | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.memhp.dsl | 31 - tests/data/acpi/pc/WAET.numamem | Bin 40 -> 0 bytes tests/data/acpi/pc/WAET.numamem.dsl | 31 - tests/data/acpi/pc/WAET.roothp | Bin 40 -> 0 bytes tests/data/acpi/q35/APIC.acpihmat.dsl | 112 - tests/data/acpi/q35/APIC.bridge | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.bridge.dsl | 104 - tests/data/acpi/q35/APIC.cphp.dsl | 146 - tests/data/acpi/q35/APIC.dimmpxm.dsl | 129 - tests/data/acpi/q35/APIC.dsl | 104 - tests/data/acpi/q35/APIC.ipmibt | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.ipmibt.dsl | 104 - tests/data/acpi/q35/APIC.memhp | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.memhp.dsl | 104 - tests/data/acpi/q35/APIC.mmio64 | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.mmio64.dsl | 104 - tests/data/acpi/q35/APIC.numamem | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.numamem.dsl | 104 - tests/data/acpi/q35/APIC.tis | Bin 120 -> 0 bytes tests/data/acpi/q35/APIC.tis.dsl | 104 - tests/data/acpi/q35/DSDT.acpihmat.dsl | 3436 ---------------- tests/data/acpi/q35/DSDT.bridge.dsl | 3141 --------------- tests/data/acpi/q35/DSDT.cphp.dsl | 3283 --------------- tests/data/acpi/q35/DSDT.dimmpxm.dsl | 3535 ----------------- tests/data/acpi/q35/DSDT.dsl | 3351 ---------------- tests/data/acpi/q35/DSDT.ipmibt.dsl | 3156 --------------- tests/data/acpi/q35/DSDT.memhp.dsl | 3442 ---------------- tests/data/acpi/q35/DSDT.mmio64.dsl | 3377 ---------------- tests/data/acpi/q35/DSDT.numamem.dsl | 3138 --------------- tests/data/acpi/q35/DSDT.tis.dsl | 3321 ---------------- tests/data/acpi/q35/FACP.acpihmat | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.acpihmat.dsl | 179 - tests/data/acpi/q35/FACP.bridge | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.bridge.dsl | 179 - tests/data/acpi/q35/FACP.cphp | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.cphp.dsl | 179 - tests/data/acpi/q35/FACP.dimmpxm | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.dimmpxm.dsl | 179 - tests/data/acpi/q35/FACP.dsl | 179 - tests/data/acpi/q35/FACP.ipmibt | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.ipmibt.dsl | 179 - tests/data/acpi/q35/FACP.memhp | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.memhp.dsl | 179 - tests/data/acpi/q35/FACP.mmio64 | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.mmio64.dsl | 179 - tests/data/acpi/q35/FACP.numamem | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.numamem.dsl | 179 - tests/data/acpi/q35/FACP.tis | Bin 244 -> 0 bytes tests/data/acpi/q35/FACP.tis.dsl | 179 - tests/data/acpi/q35/FACS.acpihmat | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.acpihmat.dsl | 32 - tests/data/acpi/q35/FACS.bridge | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.bridge.dsl | 32 - tests/data/acpi/q35/FACS.cphp | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.cphp.dsl | 32 - tests/data/acpi/q35/FACS.dimmpxm | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.dimmpxm.dsl | 32 - tests/data/acpi/q35/FACS.dsl | 32 - tests/data/acpi/q35/FACS.ipmibt | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.ipmibt.dsl | 32 - tests/data/acpi/q35/FACS.memhp | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.memhp.dsl | 32 - tests/data/acpi/q35/FACS.mmio64 | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.mmio64.dsl | 32 - tests/data/acpi/q35/FACS.numamem | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.numamem.dsl | 32 - tests/data/acpi/q35/FACS.tis | Bin 64 -> 0 bytes tests/data/acpi/q35/FACS.tis.dsl | 32 - tests/data/acpi/q35/HMAT.acpihmat.dsl | 132 - tests/data/acpi/q35/HMAT.dsl | 132 - tests/data/acpi/q35/HPET.acpihmat | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.acpihmat.dsl | 43 - tests/data/acpi/q35/HPET.bridge | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.bridge.dsl | 43 - tests/data/acpi/q35/HPET.cphp | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.cphp.dsl | 43 - tests/data/acpi/q35/HPET.dimmpxm | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.dimmpxm.dsl | 43 - tests/data/acpi/q35/HPET.dsl | 43 - tests/data/acpi/q35/HPET.ipmibt | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.ipmibt.dsl | 43 - tests/data/acpi/q35/HPET.memhp | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.memhp.dsl | 43 - tests/data/acpi/q35/HPET.mmio64 | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.mmio64.dsl | 43 - tests/data/acpi/q35/HPET.numamem | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.numamem.dsl | 43 - tests/data/acpi/q35/HPET.tis | Bin 56 -> 0 bytes tests/data/acpi/q35/HPET.tis.dsl | 43 - tests/data/acpi/q35/MCFG.acpihmat | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.acpihmat.dsl | 36 - tests/data/acpi/q35/MCFG.bridge | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.bridge.dsl | 36 - tests/data/acpi/q35/MCFG.cphp | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.cphp.dsl | 36 - tests/data/acpi/q35/MCFG.dimmpxm | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.dimmpxm.dsl | 36 - tests/data/acpi/q35/MCFG.dsl | 36 - tests/data/acpi/q35/MCFG.ipmibt | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.ipmibt.dsl | 36 - tests/data/acpi/q35/MCFG.memhp | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.memhp.dsl | 36 - tests/data/acpi/q35/MCFG.mmio64 | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.mmio64.dsl | 36 - tests/data/acpi/q35/MCFG.numamem | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.numamem.dsl | 36 - tests/data/acpi/q35/MCFG.tis | Bin 60 -> 0 bytes tests/data/acpi/q35/MCFG.tis.dsl | 36 - tests/data/acpi/q35/NFIT.dimmpxm.dsl | 115 - tests/data/acpi/q35/NFIT.dsl | 115 - tests/data/acpi/q35/SLIT.cphp.dsl | 31 - tests/data/acpi/q35/SLIT.dsl | 31 - tests/data/acpi/q35/SLIT.memhp.dsl | 31 - tests/data/acpi/q35/SRAT.acpihmat.dsl | 137 - tests/data/acpi/q35/SRAT.cphp.dsl | 168 - tests/data/acpi/q35/SRAT.dimmpxm.dsl | 194 - tests/data/acpi/q35/SRAT.dsl | 108 - tests/data/acpi/q35/SRAT.memhp.dsl | 125 - tests/data/acpi/q35/SRAT.mmio64.dsl | 108 - tests/data/acpi/q35/SRAT.numamem.dsl | 108 - tests/data/acpi/q35/SSDT.dsl | 205 - tests/data/acpi/q35/TPM2.dsl | 38 - tests/data/acpi/q35/TPM2.tis.dsl | 38 - tests/data/acpi/q35/WAET.acpihmat | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.acpihmat.dsl | 31 - tests/data/acpi/q35/WAET.bridge | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.bridge.dsl | 31 - tests/data/acpi/q35/WAET.cphp | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.cphp.dsl | 31 - tests/data/acpi/q35/WAET.dimmpxm | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.dimmpxm.dsl | 31 - tests/data/acpi/q35/WAET.dsl | 31 - tests/data/acpi/q35/WAET.ipmibt | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.ipmibt.dsl | 31 - tests/data/acpi/q35/WAET.memhp | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.memhp.dsl | 31 - tests/data/acpi/q35/WAET.mmio64 | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.mmio64.dsl | 31 - tests/data/acpi/q35/WAET.numamem | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.numamem.dsl | 31 - tests/data/acpi/q35/WAET.tis | Bin 40 -> 0 bytes tests/data/acpi/q35/WAET.tis.dsl | 31 - tests/data/acpi/virt/APIC.dsl | 78 - tests/data/acpi/virt/APIC.memhp.dsl | 78 - tests/data/acpi/virt/APIC.numamem.dsl | 78 - tests/data/acpi/virt/DSDT.dsl | 1906 --------- tests/data/acpi/virt/DSDT.memhp.dsl | 2215 ----------- tests/data/acpi/virt/DSDT.numamem.dsl | 1906 --------- tests/data/acpi/virt/FACP.dsl | 196 - tests/data/acpi/virt/FACP.memhp.dsl | 196 - tests/data/acpi/virt/FACP.numamem.dsl | 196 - tests/data/acpi/virt/GTDT.dsl | 61 - tests/data/acpi/virt/GTDT.memhp.dsl | 61 - tests/data/acpi/virt/GTDT.numamem.dsl | 61 - tests/data/acpi/virt/MCFG.dsl | 36 - tests/data/acpi/virt/MCFG.memhp.dsl | 36 - tests/data/acpi/virt/MCFG.numamem.dsl | 36 - tests/data/acpi/virt/NFIT.dsl | 103 - tests/data/acpi/virt/NFIT.memhp.dsl | 103 - tests/data/acpi/virt/SLIT.dsl | 31 - tests/data/acpi/virt/SLIT.memhp.dsl | 31 - tests/data/acpi/virt/SPCR.dsl | 57 - tests/data/acpi/virt/SPCR.memhp.dsl | 57 - tests/data/acpi/virt/SPCR.numamem.dsl | 57 - tests/data/acpi/virt/SRAT.dsl | 57 - tests/data/acpi/virt/SRAT.memhp.dsl | 107 - tests/data/acpi/virt/SRAT.numamem.dsl | 57 - tests/data/acpi/virt/SSDT.dsl | 205 - .../bios-tables-test.x86_64.iso.raw | Bin 425984 -> 0 bytes tests/libqtest.c.orig | 1106 ------ tests/qemu-iotests/core.12067 | Bin 22716416 -> 0 bytes .../bios-tables-test-allowed-diff.h.orig | 18 - .../qtest/bios-tables-test-allowed-diff.h.rej | 9 - tests/qtest/bios-tables-test.c.orig | 1200 ------ tests/qtest/bios-tables-test.c.rej | 22 - tests/test-qapi-event.c | 198 - tests/test-qmp-introspect.c | 58 - tests/test-qmp-marshal.c | 383 -- tests/vhost-user-bridge | Bin 83120 -> 0 bytes tests/vhost-user-bridge.c.orig | 1432 ------- tests/vhost-user-test.c.orig | 364 -- 290 files changed, 71489 deletions(-) delete mode 100644 tests/.vhost-user-test.c.swo delete mode 100644 tests/Makefile.include.orig delete mode 100644 tests/Makefile.orig delete mode 100644 tests/bios-tables-test.c.orig delete mode 100644 tests/data/acpi/diff-aml.sh delete mode 100644 tests/data/acpi/disassemle-aml.py delete mode 100644 tests/data/acpi/microvm/APIC.dsl delete mode 100644 tests/data/acpi/microvm/DSDT.dsl delete mode 100644 tests/data/acpi/microvm/FACP.dsl delete mode 100644 tests/data/acpi/pc/APIC.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/APIC.bridge delete mode 100644 tests/data/acpi/pc/APIC.bridge.dsl delete mode 100644 tests/data/acpi/pc/APIC.cphp.dsl delete mode 100644 tests/data/acpi/pc/APIC.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/APIC.dsl delete mode 100644 tests/data/acpi/pc/APIC.hpbridge delete mode 100644 tests/data/acpi/pc/APIC.ipmikcs delete mode 100644 tests/data/acpi/pc/APIC.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/APIC.memhp delete mode 100644 tests/data/acpi/pc/APIC.memhp.dsl delete mode 100644 tests/data/acpi/pc/APIC.numamem delete mode 100644 tests/data/acpi/pc/APIC.numamem.dsl delete mode 100644 tests/data/acpi/pc/APIC.roothp delete mode 100644 tests/data/acpi/pc/DSDT.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/DSDT.bridge.dsl delete mode 100644 tests/data/acpi/pc/DSDT.cphp.dsl delete mode 100644 tests/data/acpi/pc/DSDT.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/DSDT.dsl delete mode 100644 tests/data/acpi/pc/DSDT.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/DSDT.memhp.dsl delete mode 100644 tests/data/acpi/pc/DSDT.numamem.dsl delete mode 100644 tests/data/acpi/pc/FACP.acpihmat delete mode 100644 tests/data/acpi/pc/FACP.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/FACP.bridge delete mode 100644 tests/data/acpi/pc/FACP.bridge.dsl delete mode 100644 tests/data/acpi/pc/FACP.cphp delete mode 100644 tests/data/acpi/pc/FACP.cphp.dsl delete mode 100644 tests/data/acpi/pc/FACP.dimmpxm delete mode 100644 tests/data/acpi/pc/FACP.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/FACP.dsl delete mode 100644 tests/data/acpi/pc/FACP.hpbridge delete mode 100644 tests/data/acpi/pc/FACP.ipmikcs delete mode 100644 tests/data/acpi/pc/FACP.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/FACP.memhp delete mode 100644 tests/data/acpi/pc/FACP.memhp.dsl delete mode 100644 tests/data/acpi/pc/FACP.numamem delete mode 100644 tests/data/acpi/pc/FACP.numamem.dsl delete mode 100644 tests/data/acpi/pc/FACP.roothp delete mode 100644 tests/data/acpi/pc/FACS.acpihmat delete mode 100644 tests/data/acpi/pc/FACS.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/FACS.bridge delete mode 100644 tests/data/acpi/pc/FACS.bridge.dsl delete mode 100644 tests/data/acpi/pc/FACS.cphp delete mode 100644 tests/data/acpi/pc/FACS.cphp.dsl delete mode 100644 tests/data/acpi/pc/FACS.dimmpxm delete mode 100644 tests/data/acpi/pc/FACS.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/FACS.dsl delete mode 100644 tests/data/acpi/pc/FACS.hpbridge delete mode 100644 tests/data/acpi/pc/FACS.ipmikcs delete mode 100644 tests/data/acpi/pc/FACS.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/FACS.memhp delete mode 100644 tests/data/acpi/pc/FACS.memhp.dsl delete mode 100644 tests/data/acpi/pc/FACS.numamem delete mode 100644 tests/data/acpi/pc/FACS.numamem.dsl delete mode 100644 tests/data/acpi/pc/FACS.roothp delete mode 100644 tests/data/acpi/pc/HMAT.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/HMAT.dsl delete mode 100644 tests/data/acpi/pc/HPET.acpihmat delete mode 100644 tests/data/acpi/pc/HPET.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/HPET.bridge delete mode 100644 tests/data/acpi/pc/HPET.bridge.dsl delete mode 100644 tests/data/acpi/pc/HPET.cphp delete mode 100644 tests/data/acpi/pc/HPET.cphp.dsl delete mode 100644 tests/data/acpi/pc/HPET.dimmpxm delete mode 100644 tests/data/acpi/pc/HPET.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/HPET.dsl delete mode 100644 tests/data/acpi/pc/HPET.hpbridge delete mode 100644 tests/data/acpi/pc/HPET.ipmikcs delete mode 100644 tests/data/acpi/pc/HPET.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/HPET.memhp delete mode 100644 tests/data/acpi/pc/HPET.memhp.dsl delete mode 100644 tests/data/acpi/pc/HPET.numamem delete mode 100644 tests/data/acpi/pc/HPET.numamem.dsl delete mode 100644 tests/data/acpi/pc/HPET.roothp delete mode 100644 tests/data/acpi/pc/NFIT.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/NFIT.dsl delete mode 100644 tests/data/acpi/pc/SLIT.cphp.dsl delete mode 100644 tests/data/acpi/pc/SLIT.dsl delete mode 100644 tests/data/acpi/pc/SLIT.memhp.dsl delete mode 100644 tests/data/acpi/pc/SRAT.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/SRAT.cphp.dsl delete mode 100644 tests/data/acpi/pc/SRAT.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/SRAT.dsl delete mode 100644 tests/data/acpi/pc/SRAT.memhp.dsl delete mode 100644 tests/data/acpi/pc/SRAT.numamem.dsl delete mode 100644 tests/data/acpi/pc/SSDT.dsl delete mode 100644 tests/data/acpi/pc/WAET.acpihmat delete mode 100644 tests/data/acpi/pc/WAET.acpihmat.dsl delete mode 100644 tests/data/acpi/pc/WAET.bridge delete mode 100644 tests/data/acpi/pc/WAET.bridge.dsl delete mode 100644 tests/data/acpi/pc/WAET.cphp delete mode 100644 tests/data/acpi/pc/WAET.cphp.dsl delete mode 100644 tests/data/acpi/pc/WAET.dimmpxm delete mode 100644 tests/data/acpi/pc/WAET.dimmpxm.dsl delete mode 100644 tests/data/acpi/pc/WAET.dsl delete mode 100644 tests/data/acpi/pc/WAET.hpbridge delete mode 100644 tests/data/acpi/pc/WAET.ipmikcs delete mode 100644 tests/data/acpi/pc/WAET.ipmikcs.dsl delete mode 100644 tests/data/acpi/pc/WAET.memhp delete mode 100644 tests/data/acpi/pc/WAET.memhp.dsl delete mode 100644 tests/data/acpi/pc/WAET.numamem delete mode 100644 tests/data/acpi/pc/WAET.numamem.dsl delete mode 100644 tests/data/acpi/pc/WAET.roothp delete mode 100644 tests/data/acpi/q35/APIC.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/APIC.bridge delete mode 100644 tests/data/acpi/q35/APIC.bridge.dsl delete mode 100644 tests/data/acpi/q35/APIC.cphp.dsl delete mode 100644 tests/data/acpi/q35/APIC.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/APIC.dsl delete mode 100644 tests/data/acpi/q35/APIC.ipmibt delete mode 100644 tests/data/acpi/q35/APIC.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/APIC.memhp delete mode 100644 tests/data/acpi/q35/APIC.memhp.dsl delete mode 100644 tests/data/acpi/q35/APIC.mmio64 delete mode 100644 tests/data/acpi/q35/APIC.mmio64.dsl delete mode 100644 tests/data/acpi/q35/APIC.numamem delete mode 100644 tests/data/acpi/q35/APIC.numamem.dsl delete mode 100644 tests/data/acpi/q35/APIC.tis delete mode 100644 tests/data/acpi/q35/APIC.tis.dsl delete mode 100644 tests/data/acpi/q35/DSDT.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/DSDT.bridge.dsl delete mode 100644 tests/data/acpi/q35/DSDT.cphp.dsl delete mode 100644 tests/data/acpi/q35/DSDT.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/DSDT.dsl delete mode 100644 tests/data/acpi/q35/DSDT.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/DSDT.memhp.dsl delete mode 100644 tests/data/acpi/q35/DSDT.mmio64.dsl delete mode 100644 tests/data/acpi/q35/DSDT.numamem.dsl delete mode 100644 tests/data/acpi/q35/DSDT.tis.dsl delete mode 100644 tests/data/acpi/q35/FACP.acpihmat delete mode 100644 tests/data/acpi/q35/FACP.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/FACP.bridge delete mode 100644 tests/data/acpi/q35/FACP.bridge.dsl delete mode 100644 tests/data/acpi/q35/FACP.cphp delete mode 100644 tests/data/acpi/q35/FACP.cphp.dsl delete mode 100644 tests/data/acpi/q35/FACP.dimmpxm delete mode 100644 tests/data/acpi/q35/FACP.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/FACP.dsl delete mode 100644 tests/data/acpi/q35/FACP.ipmibt delete mode 100644 tests/data/acpi/q35/FACP.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/FACP.memhp delete mode 100644 tests/data/acpi/q35/FACP.memhp.dsl delete mode 100644 tests/data/acpi/q35/FACP.mmio64 delete mode 100644 tests/data/acpi/q35/FACP.mmio64.dsl delete mode 100644 tests/data/acpi/q35/FACP.numamem delete mode 100644 tests/data/acpi/q35/FACP.numamem.dsl delete mode 100644 tests/data/acpi/q35/FACP.tis delete mode 100644 tests/data/acpi/q35/FACP.tis.dsl delete mode 100644 tests/data/acpi/q35/FACS.acpihmat delete mode 100644 tests/data/acpi/q35/FACS.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/FACS.bridge delete mode 100644 tests/data/acpi/q35/FACS.bridge.dsl delete mode 100644 tests/data/acpi/q35/FACS.cphp delete mode 100644 tests/data/acpi/q35/FACS.cphp.dsl delete mode 100644 tests/data/acpi/q35/FACS.dimmpxm delete mode 100644 tests/data/acpi/q35/FACS.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/FACS.dsl delete mode 100644 tests/data/acpi/q35/FACS.ipmibt delete mode 100644 tests/data/acpi/q35/FACS.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/FACS.memhp delete mode 100644 tests/data/acpi/q35/FACS.memhp.dsl delete mode 100644 tests/data/acpi/q35/FACS.mmio64 delete mode 100644 tests/data/acpi/q35/FACS.mmio64.dsl delete mode 100644 tests/data/acpi/q35/FACS.numamem delete mode 100644 tests/data/acpi/q35/FACS.numamem.dsl delete mode 100644 tests/data/acpi/q35/FACS.tis delete mode 100644 tests/data/acpi/q35/FACS.tis.dsl delete mode 100644 tests/data/acpi/q35/HMAT.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/HMAT.dsl delete mode 100644 tests/data/acpi/q35/HPET.acpihmat delete mode 100644 tests/data/acpi/q35/HPET.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/HPET.bridge delete mode 100644 tests/data/acpi/q35/HPET.bridge.dsl delete mode 100644 tests/data/acpi/q35/HPET.cphp delete mode 100644 tests/data/acpi/q35/HPET.cphp.dsl delete mode 100644 tests/data/acpi/q35/HPET.dimmpxm delete mode 100644 tests/data/acpi/q35/HPET.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/HPET.dsl delete mode 100644 tests/data/acpi/q35/HPET.ipmibt delete mode 100644 tests/data/acpi/q35/HPET.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/HPET.memhp delete mode 100644 tests/data/acpi/q35/HPET.memhp.dsl delete mode 100644 tests/data/acpi/q35/HPET.mmio64 delete mode 100644 tests/data/acpi/q35/HPET.mmio64.dsl delete mode 100644 tests/data/acpi/q35/HPET.numamem delete mode 100644 tests/data/acpi/q35/HPET.numamem.dsl delete mode 100644 tests/data/acpi/q35/HPET.tis delete mode 100644 tests/data/acpi/q35/HPET.tis.dsl delete mode 100644 tests/data/acpi/q35/MCFG.acpihmat delete mode 100644 tests/data/acpi/q35/MCFG.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/MCFG.bridge delete mode 100644 tests/data/acpi/q35/MCFG.bridge.dsl delete mode 100644 tests/data/acpi/q35/MCFG.cphp delete mode 100644 tests/data/acpi/q35/MCFG.cphp.dsl delete mode 100644 tests/data/acpi/q35/MCFG.dimmpxm delete mode 100644 tests/data/acpi/q35/MCFG.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/MCFG.dsl delete mode 100644 tests/data/acpi/q35/MCFG.ipmibt delete mode 100644 tests/data/acpi/q35/MCFG.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/MCFG.memhp delete mode 100644 tests/data/acpi/q35/MCFG.memhp.dsl delete mode 100644 tests/data/acpi/q35/MCFG.mmio64 delete mode 100644 tests/data/acpi/q35/MCFG.mmio64.dsl delete mode 100644 tests/data/acpi/q35/MCFG.numamem delete mode 100644 tests/data/acpi/q35/MCFG.numamem.dsl delete mode 100644 tests/data/acpi/q35/MCFG.tis delete mode 100644 tests/data/acpi/q35/MCFG.tis.dsl delete mode 100644 tests/data/acpi/q35/NFIT.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/NFIT.dsl delete mode 100644 tests/data/acpi/q35/SLIT.cphp.dsl delete mode 100644 tests/data/acpi/q35/SLIT.dsl delete mode 100644 tests/data/acpi/q35/SLIT.memhp.dsl delete mode 100644 tests/data/acpi/q35/SRAT.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/SRAT.cphp.dsl delete mode 100644 tests/data/acpi/q35/SRAT.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/SRAT.dsl delete mode 100644 tests/data/acpi/q35/SRAT.memhp.dsl delete mode 100644 tests/data/acpi/q35/SRAT.mmio64.dsl delete mode 100644 tests/data/acpi/q35/SRAT.numamem.dsl delete mode 100644 tests/data/acpi/q35/SSDT.dsl delete mode 100644 tests/data/acpi/q35/TPM2.dsl delete mode 100644 tests/data/acpi/q35/TPM2.tis.dsl delete mode 100644 tests/data/acpi/q35/WAET.acpihmat delete mode 100644 tests/data/acpi/q35/WAET.acpihmat.dsl delete mode 100644 tests/data/acpi/q35/WAET.bridge delete mode 100644 tests/data/acpi/q35/WAET.bridge.dsl delete mode 100644 tests/data/acpi/q35/WAET.cphp delete mode 100644 tests/data/acpi/q35/WAET.cphp.dsl delete mode 100644 tests/data/acpi/q35/WAET.dimmpxm delete mode 100644 tests/data/acpi/q35/WAET.dimmpxm.dsl delete mode 100644 tests/data/acpi/q35/WAET.dsl delete mode 100644 tests/data/acpi/q35/WAET.ipmibt delete mode 100644 tests/data/acpi/q35/WAET.ipmibt.dsl delete mode 100644 tests/data/acpi/q35/WAET.memhp delete mode 100644 tests/data/acpi/q35/WAET.memhp.dsl delete mode 100644 tests/data/acpi/q35/WAET.mmio64 delete mode 100644 tests/data/acpi/q35/WAET.mmio64.dsl delete mode 100644 tests/data/acpi/q35/WAET.numamem delete mode 100644 tests/data/acpi/q35/WAET.numamem.dsl delete mode 100644 tests/data/acpi/q35/WAET.tis delete mode 100644 tests/data/acpi/q35/WAET.tis.dsl delete mode 100644 tests/data/acpi/virt/APIC.dsl delete mode 100644 tests/data/acpi/virt/APIC.memhp.dsl delete mode 100644 tests/data/acpi/virt/APIC.numamem.dsl delete mode 100644 tests/data/acpi/virt/DSDT.dsl delete mode 100644 tests/data/acpi/virt/DSDT.memhp.dsl delete mode 100644 tests/data/acpi/virt/DSDT.numamem.dsl delete mode 100644 tests/data/acpi/virt/FACP.dsl delete mode 100644 tests/data/acpi/virt/FACP.memhp.dsl delete mode 100644 tests/data/acpi/virt/FACP.numamem.dsl delete mode 100644 tests/data/acpi/virt/GTDT.dsl delete mode 100644 tests/data/acpi/virt/GTDT.memhp.dsl delete mode 100644 tests/data/acpi/virt/GTDT.numamem.dsl delete mode 100644 tests/data/acpi/virt/MCFG.dsl delete mode 100644 tests/data/acpi/virt/MCFG.memhp.dsl delete mode 100644 tests/data/acpi/virt/MCFG.numamem.dsl delete mode 100644 tests/data/acpi/virt/NFIT.dsl delete mode 100644 tests/data/acpi/virt/NFIT.memhp.dsl delete mode 100644 tests/data/acpi/virt/SLIT.dsl delete mode 100644 tests/data/acpi/virt/SLIT.memhp.dsl delete mode 100644 tests/data/acpi/virt/SPCR.dsl delete mode 100644 tests/data/acpi/virt/SPCR.memhp.dsl delete mode 100644 tests/data/acpi/virt/SPCR.numamem.dsl delete mode 100644 tests/data/acpi/virt/SRAT.dsl delete mode 100644 tests/data/acpi/virt/SRAT.memhp.dsl delete mode 100644 tests/data/acpi/virt/SRAT.numamem.dsl delete mode 100644 tests/data/acpi/virt/SSDT.dsl delete mode 100644 tests/data/uefi-boot-images/bios-tables-test.x86_64.iso.raw delete mode 100644 tests/libqtest.c.orig delete mode 100644 tests/qemu-iotests/core.12067 delete mode 100644 tests/qtest/bios-tables-test-allowed-diff.h.orig delete mode 100644 tests/qtest/bios-tables-test-allowed-diff.h.rej delete mode 100644 tests/qtest/bios-tables-test.c.orig delete mode 100644 tests/qtest/bios-tables-test.c.rej delete mode 100644 tests/test-qapi-event.c delete mode 100644 tests/test-qmp-introspect.c delete mode 100644 tests/test-qmp-marshal.c delete mode 100755 tests/vhost-user-bridge delete mode 100644 tests/vhost-user-bridge.c.orig delete mode 100644 tests/vhost-user-test.c.orig diff --git a/tests/.vhost-user-test.c.swo b/tests/.vhost-user-test.c.swo deleted file mode 100644 index 5545d2bef350c4c4197c70c9789465cfee8f84ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 16384 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 diff --git a/tests/Makefile.include.orig b/tests/Makefile.include.orig deleted file mode 100644 index ba82235bd4c..00000000000 --- a/tests/Makefile.include.orig +++ /dev/null @@ -1,1012 +0,0 @@ - -.PHONY: check-help -check-help: - @echo "Regression testing targets:" - @echo - @echo " $(MAKE) check Run all tests" - @echo " $(MAKE) check-qtest-TARGET Run qtest tests for given target" - @echo " $(MAKE) check-qtest Run qtest tests" - @echo " $(MAKE) check-unit Run qobject tests" - @echo " $(MAKE) check-speed Run qobject speed tests" - @echo " $(MAKE) check-qapi-schema Run QAPI schema tests" - @echo " $(MAKE) check-block Run block tests" - @echo " $(MAKE) check-tcg Run TCG tests" - @echo " $(MAKE) check-acceptance Run all acceptance (functional) tests" - @echo " $(MAKE) check-report.html Generates an HTML test report" - @echo " $(MAKE) check-venv Creates a Python venv for tests" - @echo " $(MAKE) check-clean Clean the tests" - @echo - @echo "Please note that HTML reports do not regenerate if the unit tests" - @echo "has not changed." - @echo - @echo "The variable SPEED can be set to control the gtester speed setting." - @echo "Default options are -k and (for $(MAKE) V=1) --verbose; they can be" - @echo "changed with variable GTESTER_OPTIONS." - -ifneq ($(wildcard config-host.mak),) -export SRC_PATH - -# TODO don't duplicate $(SRC_PATH)/Makefile's qapi-py here -qapi-py = $(SRC_PATH)/scripts/qapi/commands.py \ -$(SRC_PATH)/scripts/qapi/events.py \ -$(SRC_PATH)/scripts/qapi/introspect.py \ -$(SRC_PATH)/scripts/qapi/types.py \ -$(SRC_PATH)/scripts/qapi/visit.py \ -$(SRC_PATH)/scripts/qapi/common.py \ -$(SRC_PATH)/scripts/qapi/doc.py \ -$(SRC_PATH)/scripts/qapi-gen.py - -# Get the list of all supported sysemu targets -SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \ - $(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak))) - -check-unit-y += tests/check-qdict$(EXESUF) -check-unit-y += tests/check-block-qdict$(EXESUF) -check-unit-y += tests/test-char$(EXESUF) -check-unit-y += tests/check-qnum$(EXESUF) -check-unit-y += tests/check-qstring$(EXESUF) -check-unit-y += tests/check-qlist$(EXESUF) -check-unit-y += tests/check-qnull$(EXESUF) -check-unit-y += tests/check-qobject$(EXESUF) -check-unit-y += tests/check-qjson$(EXESUF) -check-unit-y += tests/check-qlit$(EXESUF) -check-unit-y += tests/test-qobject-output-visitor$(EXESUF) -check-unit-y += tests/test-clone-visitor$(EXESUF) -check-unit-y += tests/test-qobject-input-visitor$(EXESUF) -check-unit-y += tests/test-qmp-cmds$(EXESUF) -check-unit-y += tests/test-string-input-visitor$(EXESUF) -check-unit-y += tests/test-string-output-visitor$(EXESUF) -check-unit-y += tests/test-qmp-event$(EXESUF) -check-unit-y += tests/test-opts-visitor$(EXESUF) -check-unit-y += tests/test-coroutine$(EXESUF) -check-unit-y += tests/test-visitor-serialization$(EXESUF) -check-unit-y += tests/test-iov$(EXESUF) -check-unit-y += tests/test-aio$(EXESUF) -check-unit-y += tests/test-aio-multithread$(EXESUF) -check-unit-y += tests/test-throttle$(EXESUF) -check-unit-y += tests/test-thread-pool$(EXESUF) -check-unit-y += tests/test-hbitmap$(EXESUF) -check-unit-y += tests/test-bdrv-drain$(EXESUF) -check-unit-y += tests/test-blockjob$(EXESUF) -check-unit-y += tests/test-blockjob-txn$(EXESUF) -check-unit-y += tests/test-block-backend$(EXESUF) -check-unit-y += tests/test-image-locking$(EXESUF) -check-unit-y += tests/test-x86-cpuid$(EXESUF) -# all code tested by test-x86-cpuid is inside topology.h -ifeq ($(CONFIG_SOFTMMU),y) -check-unit-y += tests/test-xbzrle$(EXESUF) -check-unit-$(CONFIG_POSIX) += tests/test-vmstate$(EXESUF) -endif -check-unit-y += tests/test-cutils$(EXESUF) -check-unit-y += tests/test-shift128$(EXESUF) -check-unit-y += tests/test-mul64$(EXESUF) -check-unit-y += tests/test-int128$(EXESUF) -# all code tested by test-int128 is inside int128.h -check-unit-y += tests/rcutorture$(EXESUF) -check-unit-y += tests/test-rcu-list$(EXESUF) -check-unit-y += tests/test-rcu-simpleq$(EXESUF) -check-unit-y += tests/test-rcu-tailq$(EXESUF) -check-unit-y += tests/test-qdist$(EXESUF) -check-unit-y += tests/test-qht$(EXESUF) -# FIXME: {test-qht-par + gprof} often break on Travis CI -check-unit-$(call lnot,$(CONFIG_GPROF)) += tests/test-qht-par$(EXESUF) -check-unit-y += tests/test-bitops$(EXESUF) -check-unit-y += tests/test-bitcnt$(EXESUF) -check-unit-y += tests/test-qdev-global-props$(EXESUF) -check-unit-y += tests/check-qom-interface$(EXESUF) -check-unit-y += tests/check-qom-proplist$(EXESUF) -check-unit-y += tests/test-qemu-opts$(EXESUF) -check-unit-y += tests/test-keyval$(EXESUF) -check-unit-y += tests/test-write-threshold$(EXESUF) -check-unit-y += tests/test-crypto-hash$(EXESUF) -check-speed-y += tests/benchmark-crypto-hash$(EXESUF) -check-unit-y += tests/test-crypto-hmac$(EXESUF) -check-speed-y += tests/benchmark-crypto-hmac$(EXESUF) -check-unit-y += tests/test-crypto-cipher$(EXESUF) -check-speed-y += tests/benchmark-crypto-cipher$(EXESUF) -check-unit-y += tests/test-crypto-secret$(EXESUF) -check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlscredsx509$(EXESUF) -check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlssession$(EXESUF) -ifneq (,$(findstring qemu-ga,$(TOOLS))) -check-unit-$(CONFIG_LINUX) += tests/test-qga$(EXESUF) -endif -check-unit-y += tests/test-timed-average$(EXESUF) -check-unit-y += tests/test-util-sockets$(EXESUF) -check-unit-y += tests/test-io-task$(EXESUF) -check-unit-y += tests/test-io-channel-socket$(EXESUF) -check-unit-y += tests/test-io-channel-file$(EXESUF) -check-unit-$(CONFIG_GNUTLS) += tests/test-io-channel-tls$(EXESUF) -check-unit-y += tests/test-io-channel-command$(EXESUF) -check-unit-y += tests/test-io-channel-buffer$(EXESUF) -check-unit-y += tests/test-base64$(EXESUF) -check-unit-$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT)) += tests/test-crypto-pbkdf$(EXESUF) -check-unit-y += tests/test-crypto-ivgen$(EXESUF) -check-unit-y += tests/test-crypto-afsplit$(EXESUF) -check-unit-y += tests/test-crypto-xts$(EXESUF) -check-unit-y += tests/test-crypto-block$(EXESUF) -check-unit-y += tests/test-logging$(EXESUF) -check-unit-$(CONFIG_REPLICATION) += tests/test-replication$(EXESUF) -check-unit-y += tests/test-bufferiszero$(EXESUF) -check-unit-y += tests/test-uuid$(EXESUF) -check-unit-y += tests/ptimer-test$(EXESUF) -check-unit-y += tests/test-qapi-util$(EXESUF) - -check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh - -# All QTests for now are POSIX-only, but the dependencies are -# really in libqtest, not in the testcases themselves. - -check-qtest-generic-y += tests/qmp-test$(EXESUF) -check-qtest-generic-y += tests/qmp-cmd-test$(EXESUF) - -check-qtest-generic-y += tests/device-introspect-test$(EXESUF) -check-qtest-generic-y += tests/cdrom-test$(EXESUF) - -check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF) - -check-qtest-virtioserial-y += tests/virtio-console-test$(EXESUF) - -check-qtest-virtio-y += tests/virtio-net-test$(EXESUF) -check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) += tests/virtio-balloon-test$(EXESUF) -check-qtest-virtio-y += tests/virtio-blk-test$(EXESUF) -check-qtest-virtio-$(CONFIG_VIRTIO_RNG) += tests/virtio-rng-test$(EXESUF) -check-qtest-virtio-$(CONFIG_VIRTIO_SCSI) += tests/virtio-scsi-test$(EXESUF) -ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) -check-qtest-virtio-$(CONFIG_VIRTIO_9P) += tests/virtio-9p-test$(EXESUF) -endif -check-qtest-virtio-y += tests/virtio-serial-test$(EXESUF) -check-qtest-virtio-y += $(check-qtest-virtioserial-y) - -check-qtest-pci-y += tests/e1000-test$(EXESUF) -check-qtest-pci-y += tests/e1000e-test$(EXESUF) -check-qtest-pci-$(CONFIG_RTL8139_PCI) += tests/rtl8139-test$(EXESUF) -check-qtest-pci-$(CONFIG_PCNET_PCI) += tests/pcnet-test$(EXESUF) -check-qtest-pci-$(CONFIG_EEPRO100_PCI) += tests/eepro100-test$(EXESUF) -check-qtest-pci-$(CONFIG_NE2000_PCI) += tests/ne2000-test$(EXESUF) -check-qtest-pci-$(CONFIG_NVME_PCI) += tests/nvme-test$(EXESUF) -check-qtest-pci-$(CONFIG_AC97) += tests/ac97-test$(EXESUF) -check-qtest-pci-$(CONFIG_ES1370) += tests/es1370-test$(EXESUF) -check-qtest-pci-y += $(check-qtest-virtio-y) -check-qtest-pci-$(CONFIG_IPACK) += tests/tpci200-test$(EXESUF) -check-qtest-pci-$(CONFIG_IPACK) += $(check-qtest-ipack-y) -check-qtest-pci-y += tests/display-vga-test$(EXESUF) -check-qtest-pci-$(CONFIG_HDA) += tests/intel-hda-test$(EXESUF) -check-qtest-pci-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF) -check-qtest-pci-y += tests/megasas-test$(EXESUF) - -check-qtest-i386-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-i386-y += tests/fdc-test$(EXESUF) -check-qtest-i386-y += tests/ide-test$(EXESUF) -check-qtest-i386-y += tests/ahci-test$(EXESUF) -check-qtest-i386-y += tests/hd-geo-test$(EXESUF) -check-qtest-i386-y += tests/boot-order-test$(EXESUF) -check-qtest-i386-y += tests/bios-tables-test$(EXESUF) -check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF) -check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF) -check-qtest-i386-y += tests/rtc-test$(EXESUF) -check-qtest-i386-y += tests/ipmi-kcs-test$(EXESUF) -check-qtest-i386-y += tests/ipmi-bt-test$(EXESUF) -check-qtest-i386-y += tests/i440fx-test$(EXESUF) -check-qtest-i386-y += tests/fw_cfg-test$(EXESUF) -check-qtest-i386-y += tests/drive_del-test$(EXESUF) -check-qtest-i386-$(CONFIG_WDT_IB700) += tests/wdt_ib700-test$(EXESUF) -check-qtest-i386-y += tests/tco-test$(EXESUF) -check-qtest-i386-y += $(check-qtest-pci-y) -check-qtest-i386-$(CONFIG_VMXNET3_PCI) += tests/vmxnet3-test$(EXESUF) -check-qtest-i386-$(CONFIG_PVPANIC) += tests/pvpanic-test$(EXESUF) -check-qtest-i386-$(CONFIG_I82801B11) += tests/i82801b11-test$(EXESUF) -check-qtest-i386-$(CONFIG_IOH3420) += tests/ioh3420-test$(EXESUF) -check-qtest-i386-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF) -check-qtest-i386-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF) -ifeq ($(CONFIG_USB_ECHI)$(CONFIG_USB_UHCI),yy) -check-qtest-i386-y += tests/usb-hcd-ehci-test$(EXESUF) -endif -check-qtest-i386-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF) -check-qtest-i386-y += tests/cpu-plug-test$(EXESUF) -check-qtest-i386-y += tests/q35-test$(EXESUF) -check-qtest-i386-y += tests/vmgenid-test$(EXESUF) -check-qtest-i386-$(CONFIG_VHOST_USER_NET_TEST_i386) += tests/vhost-user-test$(EXESUF) -ifeq ($(CONFIG_VHOST_USER_NET_TEST_i386),) -check-qtest-x86_64-$(CONFIG_VHOST_USER_NET_TEST_x86_64) += tests/vhost-user-test$(EXESUF) -endif -check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-swtpm-test$(EXESUF) -check-qtest-i386-$(CONFIG_TPM_CRB) += tests/tpm-crb-test$(EXESUF) -check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-swtpm-test$(EXESUF) -check-qtest-i386-$(CONFIG_TPM_TIS) += tests/tpm-tis-test$(EXESUF) -check-qtest-i386-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF) -check-qtest-i386-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF) -check-qtest-i386-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF) -check-qtest-i386-y += tests/migration-test$(EXESUF) -check-qtest-i386-y += tests/test-x86-cpuid-compat$(EXESUF) -check-qtest-i386-y += tests/numa-test$(EXESUF) -check-qtest-x86_64-y += $(check-qtest-i386-y) -check-qtest-x86_64-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF) - -check-qtest-alpha-y += tests/boot-serial-test$(EXESUF) -check-qtest-alpha-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF) - -check-qtest-hppa-y += tests/boot-serial-test$(EXESUF) -check-qtest-hppa-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF) - -check-qtest-m68k-y = tests/boot-serial-test$(EXESUF) - -check-qtest-microblaze-y += tests/boot-serial-test$(EXESUF) - -check-qtest-mips-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-mips-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF) - -check-qtest-mips64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-mips64-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF) - -check-qtest-mips64el-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-mips64el-$(CONFIG_VGA) += tests/display-vga-test$(EXESUF) - -check-qtest-moxie-y += tests/boot-serial-test$(EXESUF) - -check-qtest-ppc-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-ppc-y += tests/boot-order-test$(EXESUF) -check-qtest-ppc-y += tests/prom-env-test$(EXESUF) -check-qtest-ppc-y += tests/drive_del-test$(EXESUF) -check-qtest-ppc-y += tests/boot-serial-test$(EXESUF) -check-qtest-ppc-y += tests/m48t59-test$(EXESUF) - -check-qtest-ppc64-y += $(check-qtest-ppc-y) -check-qtest-ppc64-y += tests/spapr-phb-test$(EXESUF) -check-qtest-ppc64-y += tests/pnv-xscom-test$(EXESUF) -check-qtest-ppc64-y += tests/migration-test$(EXESUF) -check-qtest-ppc64-y += tests/rtas-test$(EXESUF) -check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF) -check-qtest-ppc64-$(CONFIG_USB_OHCI) += tests/usb-hcd-ohci-test$(EXESUF) -check-qtest-ppc64-$(CONFIG_USB_UHCI) += tests/usb-hcd-uhci-test$(EXESUF) -check-qtest-ppc64-$(CONFIG_USB_XHCI_NEC) += tests/usb-hcd-xhci-test$(EXESUF) -check-qtest-ppc64-y += $(check-qtest-virtio-y) -check-qtest-ppc64-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF) -check-qtest-ppc64-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF) -check-qtest-ppc64-$(CONFIG_RTL8139_PCI) += tests/test-filter-redirector$(EXESUF) -check-qtest-ppc64-y += tests/display-vga-test$(EXESUF) -check-qtest-ppc64-y += tests/numa-test$(EXESUF) -check-qtest-ppc64-$(CONFIG_IVSHMEM_DEVICE) += tests/ivshmem-test$(EXESUF) -check-qtest-ppc64-y += tests/cpu-plug-test$(EXESUF) - -check-qtest-sh4-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) - -check-qtest-sh4eb-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) - -check-qtest-sparc-y += tests/prom-env-test$(EXESUF) -check-qtest-sparc-y += tests/m48t59-test$(EXESUF) -check-qtest-sparc-y += tests/boot-serial-test$(EXESUF) - -check-qtest-sparc64-$(CONFIG_ISA_TESTDEV) = tests/endianness-test$(EXESUF) -check-qtest-sparc64-y += tests/prom-env-test$(EXESUF) -check-qtest-sparc64-y += tests/boot-serial-test$(EXESUF) - -check-qtest-arm-y += tests/tmp105-test$(EXESUF) -check-qtest-arm-y += tests/pca9552-test$(EXESUF) -check-qtest-arm-y += tests/ds1338-test$(EXESUF) -check-qtest-arm-y += tests/microbit-test$(EXESUF) -check-qtest-arm-y += tests/m25p80-test$(EXESUF) -check-qtest-arm-y += tests/virtio-blk-test$(EXESUF) -check-qtest-arm-y += tests/test-arm-mptimer$(EXESUF) -check-qtest-arm-y += tests/boot-serial-test$(EXESUF) -check-qtest-arm-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF) -check-qtest-arm-y += tests/hexloader-test$(EXESUF) - -check-qtest-aarch64-y = tests/numa-test$(EXESUF) -check-qtest-aarch64-$(CONFIG_SDHCI) += tests/sdhci-test$(EXESUF) -check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF) -check-qtest-aarch64-y += tests/migration-test$(EXESUF) - -check-qtest-microblazeel-y += $(check-qtest-microblaze-y) - -check-qtest-xtensaeb-y += $(check-qtest-xtensa-y) - -check-qtest-s390x-y = tests/boot-serial-test$(EXESUF) -check-qtest-s390x-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF) -check-qtest-s390x-$(CONFIG_SLIRP) += tests/test-netfilter$(EXESUF) -check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-mirror$(EXESUF) -check-qtest-s390x-$(CONFIG_POSIX) += tests/test-filter-redirector$(EXESUF) -check-qtest-s390x-y += tests/drive_del-test$(EXESUF) -check-qtest-s390x-y += tests/virtio-ccw-test$(EXESUF) -check-qtest-s390x-y += tests/cpu-plug-test$(EXESUF) -check-qtest-s390x-y += tests/migration-test$(EXESUF) - -check-qtest-generic-y += tests/machine-none-test$(EXESUF) -check-qtest-generic-y += tests/qom-test$(EXESUF) -check-qtest-generic-y += tests/test-hmp$(EXESUF) - -qapi-schema += alternate-any.json -qapi-schema += alternate-array.json -qapi-schema += alternate-base.json -qapi-schema += alternate-clash.json -qapi-schema += alternate-conflict-dict.json -qapi-schema += alternate-conflict-enum-bool.json -qapi-schema += alternate-conflict-enum-int.json -qapi-schema += alternate-conflict-string.json -qapi-schema += alternate-conflict-bool-string.json -qapi-schema += alternate-conflict-num-string.json -qapi-schema += alternate-empty.json -qapi-schema += alternate-invalid-dict.json -qapi-schema += alternate-nested.json -qapi-schema += alternate-unknown.json -qapi-schema += args-alternate.json -qapi-schema += args-any.json -qapi-schema += args-array-empty.json -qapi-schema += args-array-unknown.json -qapi-schema += args-bad-boxed.json -qapi-schema += args-boxed-anon.json -qapi-schema += args-boxed-empty.json -qapi-schema += args-boxed-string.json -qapi-schema += args-int.json -qapi-schema += args-invalid.json -qapi-schema += args-member-array-bad.json -qapi-schema += args-member-case.json -qapi-schema += args-member-unknown.json -qapi-schema += args-name-clash.json -qapi-schema += args-union.json -qapi-schema += args-unknown.json -qapi-schema += bad-base.json -qapi-schema += bad-data.json -qapi-schema += bad-ident.json -qapi-schema += bad-if.json -qapi-schema += bad-if-empty.json -qapi-schema += bad-if-empty-list.json -qapi-schema += bad-if-list.json -qapi-schema += bad-type-bool.json -qapi-schema += bad-type-dict.json -qapi-schema += bad-type-int.json -qapi-schema += base-cycle-direct.json -qapi-schema += base-cycle-indirect.json -qapi-schema += command-int.json -qapi-schema += comments.json -qapi-schema += doc-bad-alternate-member.json -qapi-schema += doc-bad-command-arg.json -qapi-schema += doc-bad-section.json -qapi-schema += doc-bad-symbol.json -qapi-schema += doc-bad-union-member.json -qapi-schema += doc-before-include.json -qapi-schema += doc-before-pragma.json -qapi-schema += doc-duplicated-arg.json -qapi-schema += doc-duplicated-return.json -qapi-schema += doc-duplicated-since.json -qapi-schema += doc-empty-arg.json -qapi-schema += doc-empty-section.json -qapi-schema += doc-empty-symbol.json -qapi-schema += doc-good.json -qapi-schema += doc-interleaved-section.json -qapi-schema += doc-invalid-end.json -qapi-schema += doc-invalid-end2.json -qapi-schema += doc-invalid-return.json -qapi-schema += doc-invalid-section.json -qapi-schema += doc-invalid-start.json -qapi-schema += doc-missing-colon.json -qapi-schema += doc-missing-expr.json -qapi-schema += doc-missing-space.json -qapi-schema += doc-missing.json -qapi-schema += doc-no-symbol.json -qapi-schema += double-data.json -qapi-schema += double-type.json -qapi-schema += duplicate-key.json -qapi-schema += empty.json -qapi-schema += enum-bad-member.json -qapi-schema += enum-bad-name.json -qapi-schema += enum-bad-prefix.json -qapi-schema += enum-clash-member.json -qapi-schema += enum-dict-member-unknown.json -qapi-schema += enum-if-invalid.json -qapi-schema += enum-int-member.json -qapi-schema += enum-member-case.json -qapi-schema += enum-missing-data.json -qapi-schema += enum-wrong-data.json -qapi-schema += escape-outside-string.json -qapi-schema += escape-too-big.json -qapi-schema += escape-too-short.json -qapi-schema += event-boxed-empty.json -qapi-schema += event-case.json -qapi-schema += event-member-invalid-dict.json -qapi-schema += event-nest-struct.json -qapi-schema += flat-union-array-branch.json -qapi-schema += flat-union-bad-base.json -qapi-schema += flat-union-bad-discriminator.json -qapi-schema += flat-union-base-any.json -qapi-schema += flat-union-base-union.json -qapi-schema += flat-union-clash-member.json -qapi-schema += flat-union-empty.json -qapi-schema += flat-union-inline.json -qapi-schema += flat-union-inline-invalid-dict.json -qapi-schema += flat-union-int-branch.json -qapi-schema += flat-union-invalid-branch-key.json -qapi-schema += flat-union-invalid-discriminator.json -qapi-schema += flat-union-invalid-if-discriminator.json -qapi-schema += flat-union-no-base.json -qapi-schema += flat-union-optional-discriminator.json -qapi-schema += flat-union-string-discriminator.json -qapi-schema += funny-char.json -qapi-schema += ident-with-escape.json -qapi-schema += include-before-err.json -qapi-schema += include-cycle.json -qapi-schema += include-extra-junk.json -qapi-schema += include-format-err.json -qapi-schema += include-nested-err.json -qapi-schema += include-no-file.json -qapi-schema += include-non-file.json -qapi-schema += include-relpath.json -qapi-schema += include-repetition.json -qapi-schema += include-self-cycle.json -qapi-schema += include-simple.json -qapi-schema += indented-expr.json -qapi-schema += leading-comma-list.json -qapi-schema += leading-comma-object.json -qapi-schema += missing-colon.json -qapi-schema += missing-comma-list.json -qapi-schema += missing-comma-object.json -qapi-schema += missing-type.json -qapi-schema += nested-struct-data.json -qapi-schema += nested-struct-data-invalid-dict.json -qapi-schema += non-objects.json -qapi-schema += oob-test.json -qapi-schema += allow-preconfig-test.json -qapi-schema += pragma-doc-required-crap.json -qapi-schema += pragma-extra-junk.json -qapi-schema += pragma-name-case-whitelist-crap.json -qapi-schema += pragma-non-dict.json -qapi-schema += pragma-returns-whitelist-crap.json -qapi-schema += qapi-schema-test.json -qapi-schema += quoted-structural-chars.json -qapi-schema += redefined-builtin.json -qapi-schema += redefined-command.json -qapi-schema += redefined-event.json -qapi-schema += redefined-type.json -qapi-schema += reserved-command-q.json -qapi-schema += reserved-enum-q.json -qapi-schema += reserved-member-has.json -qapi-schema += reserved-member-q.json -qapi-schema += reserved-member-u.json -qapi-schema += reserved-member-underscore.json -qapi-schema += reserved-type-kind.json -qapi-schema += reserved-type-list.json -qapi-schema += returns-alternate.json -qapi-schema += returns-array-bad.json -qapi-schema += returns-dict.json -qapi-schema += returns-unknown.json -qapi-schema += returns-whitelist.json -qapi-schema += struct-base-clash-deep.json -qapi-schema += struct-base-clash.json -qapi-schema += struct-data-invalid.json -qapi-schema += struct-member-invalid-dict.json -qapi-schema += struct-member-invalid.json -qapi-schema += trailing-comma-list.json -qapi-schema += trailing-comma-object.json -qapi-schema += type-bypass-bad-gen.json -qapi-schema += unclosed-list.json -qapi-schema += unclosed-object.json -qapi-schema += unclosed-string.json -qapi-schema += unicode-str.json -qapi-schema += union-base-empty.json -qapi-schema += union-base-no-discriminator.json -qapi-schema += union-branch-case.json -qapi-schema += union-branch-invalid-dict.json -qapi-schema += union-clash-branches.json -qapi-schema += union-empty.json -qapi-schema += union-invalid-base.json -qapi-schema += union-optional-branch.json -qapi-schema += union-unknown.json -qapi-schema += unknown-escape.json -qapi-schema += unknown-expr-key.json - - -check-qapi-schema-y := $(addprefix tests/qapi-schema/, $(qapi-schema)) - -GENERATED_FILES += tests/test-qapi-types.h tests/test-qapi-visit.h \ - tests/test-qapi-commands.h tests/test-qapi-events.h \ - tests/test-qapi-introspect.h - -test-obj-y = tests/check-qnum.o tests/check-qstring.o tests/check-qdict.o \ - tests/check-qlist.o tests/check-qnull.o tests/check-qobject.o \ - tests/check-qjson.o tests/check-qlit.o \ - tests/check-block-qtest.o \ - tests/test-coroutine.o tests/test-string-output-visitor.o \ - tests/test-string-input-visitor.o tests/test-qobject-output-visitor.o \ - tests/test-clone-visitor.o \ - tests/test-qobject-input-visitor.o \ - tests/test-qmp-cmds.o tests/test-visitor-serialization.o \ - tests/test-x86-cpuid.o tests/test-mul64.o tests/test-int128.o \ - tests/test-opts-visitor.o tests/test-qmp-event.o \ - tests/rcutorture.o tests/test-rcu-list.o \ - tests/test-rcu-simpleq.o \ - tests/test-rcu-tailq.o \ - tests/test-qdist.o tests/test-shift128.o \ - tests/test-qht.o tests/qht-bench.o tests/test-qht-par.o \ - tests/atomic_add-bench.o tests/atomic64-bench.o - -$(test-obj-y): QEMU_INCLUDES += -Itests -QEMU_CFLAGS += -I$(SRC_PATH)/tests - - -# Deps that are common to various different sets of tests below -test-util-obj-y = libqemuutil.a -test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y) -test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \ - tests/test-qapi-events.o tests/test-qapi-introspect.o \ - $(test-qom-obj-y) -benchmark-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y) -test-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y) -test-io-obj-y = $(io-obj-y) $(test-crypto-obj-y) -test-block-obj-y = $(block-obj-y) $(test-io-obj-y) tests/iothread.o - -tests/check-qnum$(EXESUF): tests/check-qnum.o $(test-util-obj-y) -tests/check-qstring$(EXESUF): tests/check-qstring.o $(test-util-obj-y) -tests/check-qdict$(EXESUF): tests/check-qdict.o $(test-util-obj-y) -tests/check-block-qdict$(EXESUF): tests/check-block-qdict.o $(test-util-obj-y) -tests/check-qlist$(EXESUF): tests/check-qlist.o $(test-util-obj-y) -tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) -tests/check-qobject$(EXESUF): tests/check-qobject.o $(test-util-obj-y) -tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) -tests/check-qlit$(EXESUF): tests/check-qlit.o $(test-util-obj-y) -tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) - -tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y) -tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y) -tests/test-aio$(EXESUF): tests/test-aio.o $(test-block-obj-y) -tests/test-aio-multithread$(EXESUF): tests/test-aio-multithread.o $(test-block-obj-y) -tests/test-throttle$(EXESUF): tests/test-throttle.o $(test-block-obj-y) -tests/test-bdrv-drain$(EXESUF): tests/test-bdrv-drain.o $(test-block-obj-y) $(test-util-obj-y) -tests/test-blockjob$(EXESUF): tests/test-blockjob.o $(test-block-obj-y) $(test-util-obj-y) -tests/test-blockjob-txn$(EXESUF): tests/test-blockjob-txn.o $(test-block-obj-y) $(test-util-obj-y) -tests/test-block-backend$(EXESUF): tests/test-block-backend.o $(test-block-obj-y) $(test-util-obj-y) -tests/test-image-locking$(EXESUF): tests/test-image-locking.o $(test-block-obj-y) $(test-util-obj-y) -tests/test-thread-pool$(EXESUF): tests/test-thread-pool.o $(test-block-obj-y) -tests/test-iov$(EXESUF): tests/test-iov.o $(test-util-obj-y) -tests/test-hbitmap$(EXESUF): tests/test-hbitmap.o $(test-util-obj-y) $(test-crypto-obj-y) -tests/test-x86-cpuid$(EXESUF): tests/test-x86-cpuid.o -tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/xbzrle.o migration/page_cache.o $(test-util-obj-y) -tests/test-cutils$(EXESUF): tests/test-cutils.o util/cutils.o $(test-util-obj-y) -tests/test-int128$(EXESUF): tests/test-int128.o -tests/rcutorture$(EXESUF): tests/rcutorture.o $(test-util-obj-y) -tests/test-rcu-list$(EXESUF): tests/test-rcu-list.o $(test-util-obj-y) -tests/test-rcu-simpleq$(EXESUF): tests/test-rcu-simpleq.o $(test-util-obj-y) -tests/test-rcu-tailq$(EXESUF): tests/test-rcu-tailq.o $(test-util-obj-y) -tests/test-qdist$(EXESUF): tests/test-qdist.o $(test-util-obj-y) -tests/test-qht$(EXESUF): tests/test-qht.o $(test-util-obj-y) -tests/test-qht-par$(EXESUF): tests/test-qht-par.o tests/qht-bench$(EXESUF) $(test-util-obj-y) -tests/qht-bench$(EXESUF): tests/qht-bench.o $(test-util-obj-y) -tests/test-bufferiszero$(EXESUF): tests/test-bufferiszero.o $(test-util-obj-y) -tests/atomic_add-bench$(EXESUF): tests/atomic_add-bench.o $(test-util-obj-y) -tests/atomic64-bench$(EXESUF): tests/atomic64-bench.o $(test-util-obj-y) - -tests/fp/%: - $(MAKE) -C $(dir $@) $(notdir $@) - -tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \ - hw/core/qdev.o hw/core/qdev-properties.o hw/core/hotplug.o\ - hw/core/bus.o \ - hw/core/irq.o \ - hw/core/fw-path-provider.o \ - hw/core/reset.o \ - $(test-qapi-obj-y) -tests/test-vmstate$(EXESUF): tests/test-vmstate.o \ - migration/vmstate.o migration/vmstate-types.o migration/qemu-file.o \ - migration/qemu-file-channel.o migration/qjson.o \ - $(test-io-obj-y) -tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y) -tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y) -tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o - -tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y) - -tests/test-replication$(EXESUF): tests/test-replication.o $(test-util-obj-y) \ - $(test-block-obj-y) - -tests/test-qapi-types.c tests/test-qapi-types.h \ -tests/test-qapi-visit.c tests/test-qapi-visit.h \ -tests/test-qapi-commands.h tests/test-qapi-commands.c \ -tests/test-qapi-events.c tests/test-qapi-events.h \ -tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \ -tests/test-qapi-gen-timestamp ; -tests/test-qapi-gen-timestamp: $(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \ - -o tests -p "test-" $<, \ - "GEN","$(@:%-timestamp=%)") - @>$@ - -tests/qapi-schema/doc-good.test.texi: $(SRC_PATH)/tests/qapi-schema/doc-good.json $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \ - -o tests/qapi-schema -p "doc-good-" $<, \ - "GEN","$@") - @mv tests/qapi-schema/doc-good-qapi-doc.texi $@ - @rm -f tests/qapi-schema/doc-good-qapi-*.[ch] tests/qapi-schema/doc-good-qmp-*.[ch] - -tests/test-string-output-visitor$(EXESUF): tests/test-string-output-visitor.o $(test-qapi-obj-y) -tests/test-string-input-visitor$(EXESUF): tests/test-string-input-visitor.o $(test-qapi-obj-y) -tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y) -tests/test-qobject-output-visitor$(EXESUF): tests/test-qobject-output-visitor.o $(test-qapi-obj-y) -tests/test-clone-visitor$(EXESUF): tests/test-clone-visitor.o $(test-qapi-obj-y) -tests/test-qobject-input-visitor$(EXESUF): tests/test-qobject-input-visitor.o $(test-qapi-obj-y) -tests/test-qmp-cmds$(EXESUF): tests/test-qmp-cmds.o tests/test-qapi-commands.o $(test-qapi-obj-y) -tests/test-visitor-serialization$(EXESUF): tests/test-visitor-serialization.o $(test-qapi-obj-y) -tests/test-opts-visitor$(EXESUF): tests/test-opts-visitor.o $(test-qapi-obj-y) - -tests/test-shift128$(EXESUF): tests/test-shift128.o $(test-util-obj-y) -tests/test-mul64$(EXESUF): tests/test-mul64.o $(test-util-obj-y) -tests/test-bitops$(EXESUF): tests/test-bitops.o $(test-util-obj-y) -tests/test-bitcnt$(EXESUF): tests/test-bitcnt.o $(test-util-obj-y) -tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y) -tests/benchmark-crypto-hash$(EXESUF): tests/benchmark-crypto-hash.o $(test-crypto-obj-y) -tests/test-crypto-hmac$(EXESUF): tests/test-crypto-hmac.o $(test-crypto-obj-y) -tests/benchmark-crypto-hmac$(EXESUF): tests/benchmark-crypto-hmac.o $(test-crypto-obj-y) -tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y) -tests/benchmark-crypto-cipher$(EXESUF): tests/benchmark-crypto-cipher.o $(test-crypto-obj-y) -tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypto-obj-y) -tests/test-crypto-xts$(EXESUF): tests/test-crypto-xts.o $(test-crypto-obj-y) - -tests/crypto-tls-x509-helpers.o-cflags := $(TASN1_CFLAGS) -tests/crypto-tls-x509-helpers.o-libs := $(TASN1_LIBS) -tests/pkix_asn1_tab.o-cflags := $(TASN1_CFLAGS) - -tests/test-crypto-tlscredsx509.o-cflags := $(TASN1_CFLAGS) -tests/test-crypto-tlscredsx509$(EXESUF): tests/test-crypto-tlscredsx509.o \ - tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y) - -tests/test-crypto-tlssession.o-cflags := $(TASN1_CFLAGS) -tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \ - tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o \ - tests/crypto-tls-psk-helpers.o \ - $(test-crypto-obj-y) -tests/test-util-sockets$(EXESUF): tests/test-util-sockets.o \ - tests/socket-helpers.o $(test-util-obj-y) -tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y) -tests/test-io-channel-socket$(EXESUF): tests/test-io-channel-socket.o \ - tests/io-channel-helpers.o tests/socket-helpers.o $(test-io-obj-y) -tests/tpm-crb-swtpm-test$(EXESUF): tests/tpm-crb-swtpm-test.o tests/tpm-emu.o \ - tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y) -tests/tpm-crb-test$(EXESUF): tests/tpm-crb-test.o tests/tpm-emu.o $(test-io-obj-y) -tests/tpm-tis-swtpm-test$(EXESUF): tests/tpm-tis-swtpm-test.o tests/tpm-emu.o \ - tests/tpm-util.o tests/tpm-tests.o $(test-io-obj-y) -tests/tpm-tis-test$(EXESUF): tests/tpm-tis-test.o tests/tpm-emu.o $(test-io-obj-y) -tests/test-io-channel-file$(EXESUF): tests/test-io-channel-file.o \ - tests/io-channel-helpers.o $(test-io-obj-y) -tests/test-io-channel-tls$(EXESUF): tests/test-io-channel-tls.o \ - tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o \ - tests/io-channel-helpers.o $(test-io-obj-y) -tests/test-io-channel-command$(EXESUF): tests/test-io-channel-command.o \ - tests/io-channel-helpers.o $(test-io-obj-y) -tests/test-io-channel-buffer$(EXESUF): tests/test-io-channel-buffer.o \ - tests/io-channel-helpers.o $(test-io-obj-y) -tests/test-crypto-pbkdf$(EXESUF): tests/test-crypto-pbkdf.o $(test-crypto-obj-y) -tests/test-crypto-ivgen$(EXESUF): tests/test-crypto-ivgen.o $(test-crypto-obj-y) -tests/test-crypto-afsplit$(EXESUF): tests/test-crypto-afsplit.o $(test-crypto-obj-y) -tests/test-crypto-block$(EXESUF): tests/test-crypto-block.o $(test-crypto-obj-y) - -libqos-obj-y = tests/libqos/pci.o tests/libqos/fw_cfg.o tests/libqos/malloc.o -libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o -libqos-spapr-obj-y = $(libqos-obj-y) tests/libqos/malloc-spapr.o -libqos-spapr-obj-y += tests/libqos/libqos-spapr.o -libqos-spapr-obj-y += tests/libqos/rtas.o -libqos-spapr-obj-y += tests/libqos/pci-spapr.o -libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o -libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o -libqos-pc-obj-y += tests/libqos/ahci.o -libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o -libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o -libqos-usb-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/usb.o -libqos-virtio-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/virtio.o tests/libqos/virtio-pci.o tests/libqos/virtio-mmio.o tests/libqos/malloc-generic.o - -tests/qmp-test$(EXESUF): tests/qmp-test.o -tests/qmp-cmd-test$(EXESUF): tests/qmp-cmd-test.o -tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o -tests/rtc-test$(EXESUF): tests/rtc-test.o -tests/m48t59-test$(EXESUF): tests/m48t59-test.o -tests/hexloader-test$(EXESUF): tests/hexloader-test.o -tests/endianness-test$(EXESUF): tests/endianness-test.o -tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y) -tests/prom-env-test$(EXESUF): tests/prom-env-test.o $(libqos-obj-y) -tests/rtas-test$(EXESUF): tests/rtas-test.o $(libqos-spapr-obj-y) -tests/fdc-test$(EXESUF): tests/fdc-test.o -tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y) -tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y) -tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o -tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o -tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o -tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y) -tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y) -tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \ - tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y) -tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y) -tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y) -tests/pca9552-test$(EXESUF): tests/pca9552-test.o $(libqos-omap-obj-y) -tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y) -tests/microbit-test$(EXESUF): tests/microbit-test.o -tests/m25p80-test$(EXESUF): tests/m25p80-test.o -tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y) -tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y) -tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y) -tests/e1000-test$(EXESUF): tests/e1000-test.o -tests/e1000e-test$(EXESUF): tests/e1000e-test.o $(libqos-pc-obj-y) -tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y) -tests/pcnet-test$(EXESUF): tests/pcnet-test.o -tests/pnv-xscom-test$(EXESUF): tests/pnv-xscom-test.o -tests/eepro100-test$(EXESUF): tests/eepro100-test.o -tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o -tests/ne2000-test$(EXESUF): tests/ne2000-test.o -tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o -tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y) -tests/virtio-balloon-test$(EXESUF): tests/virtio-balloon-test.o $(libqos-virtio-obj-y) -tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y) -tests/virtio-ccw-test$(EXESUF): tests/virtio-ccw-test.o -tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y) -tests/virtio-rng-test$(EXESUF): tests/virtio-rng-test.o $(libqos-pc-obj-y) -tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y) -tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o $(libqos-virtio-obj-y) -tests/virtio-serial-test$(EXESUF): tests/virtio-serial-test.o $(libqos-virtio-obj-y) -tests/virtio-console-test$(EXESUF): tests/virtio-console-test.o $(libqos-virtio-obj-y) -tests/tpci200-test$(EXESUF): tests/tpci200-test.o -tests/display-vga-test$(EXESUF): tests/display-vga-test.o -tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o -tests/qom-test$(EXESUF): tests/qom-test.o -tests/test-hmp$(EXESUF): tests/test-hmp.o -tests/machine-none-test$(EXESUF): tests/machine-none-test.o -tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-virtio-obj-y) -tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y) -tests/nvme-test$(EXESUF): tests/nvme-test.o $(libqos-pc-obj-y) -tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o -tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o -tests/ac97-test$(EXESUF): tests/ac97-test.o -tests/es1370-test$(EXESUF): tests/es1370-test.o -tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o -tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o -tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y) -tests/cpu-plug-test$(EXESUF): tests/cpu-plug-test.o -tests/migration-test$(EXESUF): tests/migration-test.o -tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o $(test-util-obj-y) \ - $(qtest-obj-y) $(test-io-obj-y) $(libqos-virtio-obj-y) $(libqos-pc-obj-y) \ - $(chardev-obj-y) -tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o -tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y) -tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y) -tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y) -tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y) -tests/test-filter-mirror$(EXESUF): tests/test-filter-mirror.o $(qtest-obj-y) -tests/test-filter-redirector$(EXESUF): tests/test-filter-redirector.o $(qtest-obj-y) -tests/test-x86-cpuid-compat$(EXESUF): tests/test-x86-cpuid-compat.o $(qtest-obj-y) -tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o contrib/ivshmem-server/ivshmem-server.o $(libqos-pc-obj-y) $(libqos-spapr-obj-y) -tests/megasas-test$(EXESUF): tests/megasas-test.o $(libqos-spapr-obj-y) $(libqos-pc-obj-y) -tests/vhost-user-bridge$(EXESUF): tests/vhost-user-bridge.o $(test-util-obj-y) libvhost-user.a -tests/test-uuid$(EXESUF): tests/test-uuid.o $(test-util-obj-y) -tests/test-arm-mptimer$(EXESUF): tests/test-arm-mptimer.o -tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $(test-util-obj-y) -tests/numa-test$(EXESUF): tests/numa-test.o -tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o tests/acpi-utils.o -tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y) -tests/cdrom-test$(EXESUF): tests/cdrom-test.o tests/boot-sector.o $(libqos-obj-y) - -tests/migration/stress$(EXESUF): tests/migration/stress.o - $(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"LINK","$(TARGET_DIR)$@") - -INITRD_WORK_DIR=tests/migration/initrd - -tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF) - mkdir -p $(INITRD_WORK_DIR) - cp $< $(INITRD_WORK_DIR)/init - (cd $(INITRD_WORK_DIR) && (find | cpio --quiet -o -H newc | gzip -9)) > $@ - rm $(INITRD_WORK_DIR)/init - rmdir $(INITRD_WORK_DIR) - -ifeq ($(CONFIG_POSIX),y) -LIBS += -lutil -endif - -# QTest rules - -TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS))) -ifeq ($(CONFIG_POSIX),y) -QTEST_TARGETS = $(TARGETS) -check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y)) -check-qtest-y += $(check-qtest-generic-y) -else -QTEST_TARGETS = -endif - -qtest-obj-y = tests/libqtest.o $(test-util-obj-y) -$(check-qtest-y): $(qtest-obj-y) - -tests/test-qga$(EXESUF): qemu-ga$(EXESUF) -tests/test-qga$(EXESUF): tests/test-qga.o $(qtest-obj-y) - -SPEED = quick - -# gtester tests, possibly with verbose output -# do_test_tap runs all tests, even if some of them fail, while do_test_human -# stops at the first failure unless -k is given on the command line - -define do_test_human_k - $(quiet-@)rc=0; $(foreach COMMAND, $1, \ - $(call quiet-command-run, \ - export MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2; \ - $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \ - | ./scripts/tap-driver.pl --test-name="$(notdir $(COMMAND))" $(if $(V),, --show-failures-only) \ - || rc=$$?;, "TEST", "$@: $(COMMAND)")) exit $$rc -endef -define do_test_human_no_k - $(foreach COMMAND, $1, \ - $(call quiet-command, \ - MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2 \ - $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \ - | ./scripts/tap-driver.pl --test-name="$(notdir $(COMMAND))" $(if $(V),, --show-failures-only), \ - "TEST", "$@: $(COMMAND)") -) -endef -do_test_human = \ - $(if $(findstring k, $(MAKEFLAGS)), $(do_test_human_k), $(do_test_human_no_k)) - -define do_test_tap - $(call quiet-command, \ - { export MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} $2; \ - $(foreach COMMAND, $1, \ - $(COMMAND) -m=$(SPEED) -k --tap < /dev/null \ - | sed "s/^[a-z][a-z]* [0-9]* /&$(notdir $(COMMAND)) /" || true; ) } \ - | ./scripts/tap-merge.pl | tee "$@" \ - | ./scripts/tap-driver.pl $(if $(V),, --show-failures-only), \ - "TAP","$@") -endef - -.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS)) -$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y) - $(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \ - QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \ - QTEST_QEMU_IMG=qemu-img$(EXESUF)) - -check-unit: $(check-unit-y) - $(call do_test_human, $^) - -check-speed: $(check-speed-y) - $(call do_test_human, $^) - -# gtester tests with TAP output - -$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: $(check-qtest-y) - $(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \ - QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \ - QTEST_QEMU_IMG=qemu-img$(EXESUF)) - -check-report-unit.tap: $(check-unit-y) - $(call do_test_tap,$^) - -# Reports and overall runs - -check-report.tap: $(patsubst %,check-report-qtest-%.tap, $(QTEST_TARGETS)) check-report-unit.tap - $(call quiet-command,./scripts/tap-merge.py $^ > $@,"GEN","$@") - -# Per guest TCG tests - -LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS)) -BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(LINUX_USER_TARGETS)) -CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARGETS)) -RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS)) - -ifeq ($(HAVE_USER_DOCKER),y) -# Probe for the Docker Builds needed for each build -$(foreach PROBE_TARGET,$(TARGET_DIRS), \ - $(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) \ - $(if $(DOCKER_PREREQ), \ - $(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ)))) -endif - -build-tcg-tests-%: - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \ - SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" guest-tests, \ - "BUILD", "TCG tests for $*") - -run-tcg-tests-%: % build-tcg-tests-% - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \ - SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" run-guest-tests, \ - "RUN", "TCG tests for $*") - -clean-tcg-tests-%: - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" clean-guest-tests,) - -.PHONY: build-tcg -build-tcg: $(BUILD_TCG_TARGET_RULES) - -.PHONY: check-tcg -check-tcg: $(RUN_TCG_TARGET_RULES) - -.PHONY: clean-tcg -clean-tcg: $(CLEAN_TCG_TARGET_RULES) - -# Other tests - -QEMU_IOTESTS_HELPERS-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_LINUX)) = tests/qemu-iotests/socket_scm_helper$(EXESUF) - -.PHONY: check-tests/qemu-iotests-quick.sh -check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) - $< - -.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y)) -$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json - $(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \ - $(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \ - $^ >$*.test.out 2>$*.test.err; \ - echo $$? >$*.test.exit, \ - "TEST","$*.out") - @# Sanitize error messages (make them independent of build directory) - @perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff -u $(SRC_PATH)/$*.err - - @diff -u $(SRC_PATH)/$*.out $*.test.out - @diff -u $(SRC_PATH)/$*.exit $*.test.exit - -.PHONY: check-tests/qapi-schema/doc-good.texi -check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi - @diff -u $(SRC_PATH)/tests/qapi-schema/doc-good.texi $< - -.PHONY: check-decodetree -check-decodetree: - $(call quiet-command, \ - cd $(SRC_PATH)/tests/decode && \ - ./check.sh "$(PYTHON)" "$(SRC_PATH)/scripts/decodetree.py", \ - TEST, decodetree.py) - -# Python venv for running tests - -.PHONY: check-venv check-acceptance - -TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv -TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt -TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results -# Controls the output generated by Avocado when running tests. -# Any number of command separated loggers are accepted. For more -# information please refer to "avocado --help". -AVOCADO_SHOW=none - -PYTHON3 = $(shell $(PYTHON) -c 'import sys; print(1 if sys.version_info >= (3, 0) else 0)') -ifeq ($(PYTHON3), 1) -$(TESTS_VENV_DIR): $(TESTS_VENV_REQ) - $(call quiet-command, \ - $(PYTHON) -m venv --system-site-packages $@, \ - VENV, $@) - $(call quiet-command, \ - $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \ - PIP, $(TESTS_VENV_REQ)) - $(call quiet-command, touch $@) -else -$(TESTS_VENV_DIR): - $(error "venv directory for tests requires Python 3") -endif - -$(TESTS_RESULTS_DIR): - $(call quiet-command, mkdir -p $@, \ - MKDIR, $@) - -check-venv: $(TESTS_VENV_DIR) - -check-acceptance: check-venv $(TESTS_RESULTS_DIR) - $(call quiet-command, \ - $(TESTS_VENV_DIR)/bin/python -m avocado \ - --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \ - --failfast=on $(SRC_PATH)/tests/acceptance, \ - "AVOCADO", "tests/acceptance") - -# Consolidated targets - -.PHONY: check-qapi-schema check-qtest check-unit check check-clean -check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) check-tests/qapi-schema/doc-good.texi -check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS)) -check-block: $(patsubst %,check-%, $(check-block-y)) -check: check-qapi-schema check-unit check-qtest check-decodetree -check-clean: - rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y) - rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y)) - rm -f tests/test-qapi-gen-timestamp - rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR) - -clean: check-clean - -# Build the help program automatically - -all: $(QEMU_IOTESTS_HELPERS-y) - --include $(wildcard tests/*.d) --include $(wildcard tests/libqos/*.d) - -endif diff --git a/tests/Makefile.orig b/tests/Makefile.orig deleted file mode 100644 index e6474ba31b8..00000000000 --- a/tests/Makefile.orig +++ /dev/null @@ -1,569 +0,0 @@ -export SRC_PATH - -qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py - -# Get the list of all supported sysemu targets -SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \ - $(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak))) - -check-unit-y = tests/check-qdict$(EXESUF) -gcov-files-check-qdict-y = qobject/qdict.c -check-unit-y += tests/check-qfloat$(EXESUF) -gcov-files-check-qfloat-y = qobject/qfloat.c -check-unit-y += tests/check-qint$(EXESUF) -gcov-files-check-qint-y = qobject/qint.c -check-unit-y += tests/check-qstring$(EXESUF) -gcov-files-check-qstring-y = qobject/qstring.c -check-unit-y += tests/check-qlist$(EXESUF) -gcov-files-check-qlist-y = qobject/qlist.c -check-unit-y += tests/check-qjson$(EXESUF) -gcov-files-check-qjson-y = qobject/qjson.c -check-unit-y += tests/test-qmp-output-visitor$(EXESUF) -gcov-files-test-qmp-output-visitor-y = qapi/qmp-output-visitor.c -check-unit-y += tests/test-qmp-input-visitor$(EXESUF) -gcov-files-test-qmp-input-visitor-y = qapi/qmp-input-visitor.c -check-unit-y += tests/test-qmp-input-strict$(EXESUF) -check-unit-y += tests/test-qmp-commands$(EXESUF) -gcov-files-test-qmp-commands-y = qapi/qmp-dispatch.c -check-unit-y += tests/test-string-input-visitor$(EXESUF) -gcov-files-test-string-input-visitor-y = qapi/string-input-visitor.c -check-unit-y += tests/test-string-output-visitor$(EXESUF) -gcov-files-test-string-output-visitor-y = qapi/string-output-visitor.c -check-unit-y += tests/test-qmp-event$(EXESUF) -gcov-files-test-qmp-event-y += qapi/qmp-event.c -check-unit-y += tests/test-opts-visitor$(EXESUF) -gcov-files-test-opts-visitor-y = qapi/opts-visitor.c -check-unit-y += tests/test-coroutine$(EXESUF) -gcov-files-test-coroutine-y = coroutine-$(CONFIG_COROUTINE_BACKEND).c -check-unit-y += tests/test-visitor-serialization$(EXESUF) -check-unit-y += tests/test-iov$(EXESUF) -gcov-files-test-iov-y = util/iov.c -check-unit-y += tests/test-aio$(EXESUF) -check-unit-$(CONFIG_POSIX) += tests/test-rfifolock$(EXESUF) -check-unit-y += tests/test-throttle$(EXESUF) -gcov-files-test-aio-$(CONFIG_WIN32) = aio-win32.c -gcov-files-test-aio-$(CONFIG_POSIX) = aio-posix.c -check-unit-y += tests/test-thread-pool$(EXESUF) -gcov-files-test-thread-pool-y = thread-pool.c -gcov-files-test-hbitmap-y = util/hbitmap.c -check-unit-y += tests/test-hbitmap$(EXESUF) -check-unit-y += tests/test-x86-cpuid$(EXESUF) -# all code tested by test-x86-cpuid is inside topology.h -gcov-files-test-x86-cpuid-y = -ifeq ($(CONFIG_SOFTMMU),y) -check-unit-y += tests/test-xbzrle$(EXESUF) -gcov-files-test-xbzrle-y = migration/xbzrle.c -check-unit-$(CONFIG_POSIX) += tests/test-vmstate$(EXESUF) -endif -check-unit-y += tests/test-cutils$(EXESUF) -gcov-files-test-cutils-y += util/cutils.c -check-unit-y += tests/test-mul64$(EXESUF) -gcov-files-test-mul64-y = util/host-utils.c -check-unit-y += tests/test-int128$(EXESUF) -# all code tested by test-int128 is inside int128.h -gcov-files-test-int128-y = -check-unit-y += tests/rcutorture$(EXESUF) -gcov-files-rcutorture-y = util/rcu.c -check-unit-y += tests/test-rcu-list$(EXESUF) -gcov-files-test-rcu-list-y = util/rcu.c -check-unit-y += tests/test-bitops$(EXESUF) -check-unit-$(CONFIG_HAS_GLIB_SUBPROCESS_TESTS) += tests/test-qdev-global-props$(EXESUF) -check-unit-y += tests/check-qom-interface$(EXESUF) -gcov-files-check-qom-interface-y = qom/object.c -check-unit-y += tests/check-qom-proplist$(EXESUF) -gcov-files-check-qom-proplist-y = qom/object.c -check-unit-y += tests/test-qemu-opts$(EXESUF) -gcov-files-test-qemu-opts-y = qom/test-qemu-opts.c -check-unit-y += tests/test-write-threshold$(EXESUF) -gcov-files-test-write-threshold-y = block/write-threshold.c -check-unit-$(CONFIG_GNUTLS_HASH) += tests/test-crypto-hash$(EXESUF) -check-unit-y += tests/test-crypto-cipher$(EXESUF) -check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlscredsx509$(EXESUF) -check-unit-$(CONFIG_GNUTLS) += tests/test-crypto-tlssession$(EXESUF) - -check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh - -# All QTests for now are POSIX-only, but the dependencies are -# really in libqtest, not in the testcases themselves. - -gcov-files-ipack-y += hw/ipack/ipack.c -check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF) -gcov-files-ipack-y += hw/char/ipoctal232.c - -check-qtest-virtioserial-y += tests/virtio-console-test$(EXESUF) -gcov-files-virtioserial-y += hw/char/virtio-console.c - -gcov-files-virtio-y += i386-softmmu/hw/virtio/virtio.c -check-qtest-virtio-y += tests/virtio-net-test$(EXESUF) -gcov-files-virtio-y += i386-softmmu/hw/net/virtio-net.c -check-qtest-virtio-y += tests/virtio-balloon-test$(EXESUF) -gcov-files-virtio-y += i386-softmmu/hw/virtio/virtio-balloon.c -check-qtest-virtio-y += tests/virtio-blk-test$(EXESUF) -gcov-files-virtio-y += i386-softmmu/hw/block/virtio-blk.c -check-qtest-virtio-y += tests/virtio-rng-test$(EXESUF) -gcov-files-virtio-y += hw/virtio/virtio-rng.c -check-qtest-virtio-y += tests/virtio-scsi-test$(EXESUF) -gcov-files-virtio-y += i386-softmmu/hw/scsi/virtio-scsi.c -ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) -check-qtest-virtio-y += tests/virtio-9p-test$(EXESUF) -gcov-files-virtio-y += hw/9pfs/virtio-9p.c -gcov-files-virtio-y += i386-softmmu/hw/9pfs/virtio-9p-device.c -endif -check-qtest-virtio-y += tests/virtio-serial-test$(EXESUF) -gcov-files-virtio-y += i386-softmmu/hw/char/virtio-serial-bus.c -check-qtest-virtio-y += $(check-qtest-virtioserial-y) -gcov-files-virtio-y += $(gcov-files-virtioserial-y) - -check-qtest-pci-y += tests/e1000-test$(EXESUF) -gcov-files-pci-y += hw/net/e1000.c -check-qtest-pci-y += tests/rtl8139-test$(EXESUF) -gcov-files-pci-y += hw/net/rtl8139.c -check-qtest-pci-y += tests/pcnet-test$(EXESUF) -gcov-files-pci-y += hw/net/pcnet.c -gcov-files-pci-y += hw/net/pcnet-pci.c -check-qtest-pci-y += tests/eepro100-test$(EXESUF) -gcov-files-pci-y += hw/net/eepro100.c -check-qtest-pci-y += tests/ne2000-test$(EXESUF) -gcov-files-pci-y += hw/net/ne2000.c -check-qtest-pci-y += tests/nvme-test$(EXESUF) -gcov-files-pci-y += hw/block/nvme.c -check-qtest-pci-y += tests/ac97-test$(EXESUF) -gcov-files-pci-y += hw/audio/ac97.c -check-qtest-pci-y += tests/es1370-test$(EXESUF) -gcov-files-pci-y += hw/audio/es1370.c -check-qtest-pci-y += $(check-qtest-virtio-y) -gcov-files-pci-y += $(gcov-files-virtio-y) hw/virtio/virtio-pci.c -check-qtest-pci-y += tests/tpci200-test$(EXESUF) -gcov-files-pci-y += hw/ipack/tpci200.c -check-qtest-pci-y += $(check-qtest-ipack-y) -gcov-files-pci-y += $(gcov-files-ipack-y) -check-qtest-pci-y += tests/display-vga-test$(EXESUF) -gcov-files-pci-y += hw/display/vga.c -gcov-files-pci-y += hw/display/cirrus_vga.c -gcov-files-pci-y += hw/display/vga-pci.c -gcov-files-pci-y += hw/display/virtio-gpu.c -gcov-files-pci-y += hw/display/virtio-gpu-pci.c -gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c -check-qtest-pci-y += tests/intel-hda-test$(EXESUF) -gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c - -check-qtest-i386-y = tests/endianness-test$(EXESUF) -check-qtest-i386-y += tests/fdc-test$(EXESUF) -gcov-files-i386-y = hw/block/fdc.c -check-qtest-i386-y += tests/ide-test$(EXESUF) -check-qtest-i386-y += tests/ahci-test$(EXESUF) -check-qtest-i386-y += tests/hd-geo-test$(EXESUF) -gcov-files-i386-y += hw/block/hd-geometry.c -check-qtest-i386-y += tests/boot-order-test$(EXESUF) -check-qtest-i386-y += tests/bios-tables-test$(EXESUF) -check-qtest-i386-y += tests/rtc-test$(EXESUF) -check-qtest-i386-y += tests/i440fx-test$(EXESUF) -check-qtest-i386-y += tests/fw_cfg-test$(EXESUF) -check-qtest-i386-y += tests/drive_del-test$(EXESUF) -check-qtest-i386-y += tests/wdt_ib700-test$(EXESUF) -check-qtest-i386-y += tests/tco-test$(EXESUF) -gcov-files-i386-y += hw/watchdog/watchdog.c hw/watchdog/wdt_ib700.c -check-qtest-i386-y += $(check-qtest-pci-y) -gcov-files-i386-y += $(gcov-files-pci-y) -check-qtest-i386-y += tests/vmxnet3-test$(EXESUF) -gcov-files-i386-y += hw/net/vmxnet3.c -gcov-files-i386-y += hw/net/vmxnet_rx_pkt.c -gcov-files-i386-y += hw/net/vmxnet_tx_pkt.c -check-qtest-i386-y += tests/pvpanic-test$(EXESUF) -gcov-files-i386-y += i386-softmmu/hw/misc/pvpanic.c -check-qtest-i386-y += tests/i82801b11-test$(EXESUF) -gcov-files-i386-y += hw/pci-bridge/i82801b11.c -check-qtest-i386-y += tests/ioh3420-test$(EXESUF) -gcov-files-i386-y += hw/pci-bridge/ioh3420.c -check-qtest-i386-y += tests/usb-hcd-ohci-test$(EXESUF) -gcov-files-i386-y += hw/usb/hcd-ohci.c -check-qtest-i386-y += tests/usb-hcd-uhci-test$(EXESUF) -gcov-files-i386-y += hw/usb/hcd-uhci.c -check-qtest-i386-y += tests/usb-hcd-ehci-test$(EXESUF) -gcov-files-i386-y += hw/usb/hcd-ehci.c -gcov-files-i386-y += hw/usb/dev-hid.c -gcov-files-i386-y += hw/usb/dev-storage.c -check-qtest-i386-y += tests/usb-hcd-xhci-test$(EXESUF) -gcov-files-i386-y += hw/usb/hcd-xhci.c -check-qtest-i386-y += tests/pc-cpu-test$(EXESUF) -check-qtest-i386-y += tests/q35-test$(EXESUF) -gcov-files-i386-y += hw/pci-host/q35.c -ifeq ($(CONFIG_VHOST_NET),y) -check-qtest-i386-$(CONFIG_LINUX) += tests/vhost-user-test$(EXESUF) -endif -check-qtest-x86_64-y = $(check-qtest-i386-y) -gcov-files-i386-y += i386-softmmu/hw/timer/mc146818rtc.c -gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y)) -check-qtest-mips-y = tests/endianness-test$(EXESUF) -check-qtest-mips64-y = tests/endianness-test$(EXESUF) -check-qtest-mips64el-y = tests/endianness-test$(EXESUF) -check-qtest-ppc-y = tests/endianness-test$(EXESUF) -check-qtest-ppc64-y = tests/endianness-test$(EXESUF) -check-qtest-sh4-y = tests/endianness-test$(EXESUF) -check-qtest-sh4eb-y = tests/endianness-test$(EXESUF) -check-qtest-sparc64-y = tests/endianness-test$(EXESUF) -#check-qtest-sparc-y = tests/m48t59-test$(EXESUF) -#check-qtest-sparc64-y += tests/m48t59-test$(EXESUF) -gcov-files-sparc-y += hw/timer/m48t59.c -gcov-files-sparc64-y += hw/timer/m48t59.c -check-qtest-arm-y = tests/tmp105-test$(EXESUF) -check-qtest-arm-y = tests/ds1338-test$(EXESUF) -gcov-files-arm-y += hw/misc/tmp105.c -check-qtest-arm-y += tests/virtio-blk-test$(EXESUF) -gcov-files-arm-y += arm-softmmu/hw/block/virtio-blk.c -check-qtest-ppc-y += tests/boot-order-test$(EXESUF) -check-qtest-ppc64-y += tests/boot-order-test$(EXESUF) -check-qtest-ppc64-y += tests/spapr-phb-test$(EXESUF) -gcov-files-ppc64-y += ppc64-softmmu/hw/ppc/spapr_pci.c -check-qtest-microblazeel-y = $(check-qtest-microblaze-y) -check-qtest-xtensaeb-y = $(check-qtest-xtensa-y) - -# qom-test works for all sysemu architectures: -$(foreach target,$(SYSEMU_TARGET_LIST), \ - $(if $(findstring tests/qom-test$(EXESUF), $(check-qtest-$(target)-y)),, \ - $(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF)))) - -check-qapi-schema-y := $(addprefix tests/qapi-schema/, \ - comments.json empty.json enum-empty.json enum-missing-data.json \ - enum-wrong-data.json enum-int-member.json enum-dict-member.json \ - enum-clash-member.json enum-max-member.json enum-union-clash.json \ - enum-bad-name.json enum-bad-prefix.json \ - funny-char.json indented-expr.json \ - missing-type.json bad-ident.json ident-with-escape.json \ - escape-outside-string.json unknown-escape.json \ - escape-too-short.json escape-too-big.json unicode-str.json \ - double-type.json bad-base.json bad-type-bool.json bad-type-int.json \ - bad-type-dict.json double-data.json unknown-expr-key.json \ - redefined-type.json redefined-command.json redefined-builtin.json \ - redefined-event.json command-int.json bad-data.json event-max.json \ - type-bypass-bad-gen.json \ - args-invalid.json \ - args-array-empty.json args-array-unknown.json args-int.json \ - args-unknown.json args-member-unknown.json args-member-array.json \ - args-member-array-bad.json args-alternate.json args-union.json \ - args-any.json \ - returns-array-bad.json returns-int.json returns-dict.json \ - returns-unknown.json returns-alternate.json returns-whitelist.json \ - missing-colon.json missing-comma-list.json missing-comma-object.json \ - struct-data-invalid.json struct-member-invalid.json \ - nested-struct-data.json non-objects.json \ - qapi-schema-test.json quoted-structural-chars.json \ - leading-comma-list.json leading-comma-object.json \ - trailing-comma-list.json trailing-comma-object.json \ - unclosed-list.json unclosed-object.json unclosed-string.json \ - duplicate-key.json union-invalid-base.json union-bad-branch.json \ - union-optional-branch.json union-unknown.json union-max.json \ - flat-union-optional-discriminator.json flat-union-no-base.json \ - flat-union-invalid-discriminator.json flat-union-inline.json \ - flat-union-invalid-branch-key.json flat-union-reverse-define.json \ - flat-union-string-discriminator.json union-base-no-discriminator.json \ - flat-union-bad-discriminator.json flat-union-bad-base.json \ - flat-union-base-any.json \ - flat-union-array-branch.json flat-union-int-branch.json \ - flat-union-base-union.json flat-union-branch-clash.json \ - alternate-nested.json alternate-unknown.json alternate-clash.json \ - alternate-good.json alternate-base.json alternate-array.json \ - alternate-conflict-string.json alternate-conflict-dict.json \ - include-simple.json include-relpath.json include-format-err.json \ - include-non-file.json include-no-file.json include-before-err.json \ - include-nested-err.json include-self-cycle.json include-cycle.json \ - include-repetition.json event-nest-struct.json event-case.json \ - struct-base-clash.json struct-base-clash-deep.json ) - -GENERATED_HEADERS += tests/test-qapi-types.h tests/test-qapi-visit.h \ - tests/test-qmp-commands.h tests/test-qapi-event.h \ - tests/test-qmp-introspect.h - -test-obj-y = tests/check-qint.o tests/check-qstring.o tests/check-qdict.o \ - tests/check-qlist.o tests/check-qfloat.o tests/check-qjson.o \ - tests/test-coroutine.o tests/test-string-output-visitor.o \ - tests/test-string-input-visitor.o tests/test-qmp-output-visitor.o \ - tests/test-qmp-input-visitor.o tests/test-qmp-input-strict.o \ - tests/test-qmp-commands.o tests/test-visitor-serialization.o \ - tests/test-x86-cpuid.o tests/test-mul64.o tests/test-int128.o \ - tests/test-opts-visitor.o tests/test-qmp-event.o \ - tests/rcutorture.o tests/test-rcu-list.o - -$(test-obj-y): QEMU_INCLUDES += -Itests -QEMU_CFLAGS += -I$(SRC_PATH)/tests - - -# Deps that are common to various different sets of tests below -test-util-obj-y = libqemuutil.a libqemustub.a -test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y) -test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \ - tests/test-qapi-event.o tests/test-qmp-introspect.o \ - $(test-qom-obj-y) -test-crypto-obj-y = $(crypto-obj-y) $(test-qom-obj-y) -test-block-obj-y = $(block-obj-y) $(test-crypto-obj-y) - -tests/check-qint$(EXESUF): tests/check-qint.o $(test-util-obj-y) -tests/check-qstring$(EXESUF): tests/check-qstring.o $(test-util-obj-y) -tests/check-qdict$(EXESUF): tests/check-qdict.o $(test-util-obj-y) -tests/check-qlist$(EXESUF): tests/check-qlist.o $(test-util-obj-y) -tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y) -tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) -tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) -tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y) -tests/test-aio$(EXESUF): tests/test-aio.o $(test-block-obj-y) -tests/test-rfifolock$(EXESUF): tests/test-rfifolock.o $(test-util-obj-y) -tests/test-throttle$(EXESUF): tests/test-throttle.o $(test-block-obj-y) -tests/test-thread-pool$(EXESUF): tests/test-thread-pool.o $(test-block-obj-y) -tests/test-iov$(EXESUF): tests/test-iov.o $(test-util-obj-y) -tests/test-hbitmap$(EXESUF): tests/test-hbitmap.o $(test-util-obj-y) -tests/test-x86-cpuid$(EXESUF): tests/test-x86-cpuid.o -tests/test-xbzrle$(EXESUF): tests/test-xbzrle.o migration/xbzrle.o page_cache.o $(test-util-obj-y) -tests/test-cutils$(EXESUF): tests/test-cutils.o util/cutils.o -tests/test-int128$(EXESUF): tests/test-int128.o -tests/rcutorture$(EXESUF): tests/rcutorture.o $(test-util-obj-y) -tests/test-rcu-list$(EXESUF): tests/test-rcu-list.o $(test-util-obj-y) - -tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \ - hw/core/qdev.o hw/core/qdev-properties.o hw/core/hotplug.o\ - hw/core/irq.o \ - hw/core/fw-path-provider.o \ - $(test-qapi-obj-y) -tests/test-vmstate$(EXESUF): tests/test-vmstate.o \ - migration/vmstate.o migration/qemu-file.o migration/qemu-file-buf.o \ - migration/qemu-file-unix.o qjson.o \ - $(test-qom-obj-y) - -tests/test-qapi-types.c tests/test-qapi-types.h :\ -$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \ - $(gen-out-type) -o tests -p "test-" $<, \ - " GEN $@") -tests/test-qapi-visit.c tests/test-qapi-visit.h :\ -$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \ - $(gen-out-type) -o tests -p "test-" $<, \ - " GEN $@") -tests/test-qmp-commands.h tests/test-qmp-marshal.c :\ -$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \ - $(gen-out-type) -o tests -p "test-" $<, \ - " GEN $@") -tests/test-qapi-event.c tests/test-qapi-event.h :\ -$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-event.py $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-event.py \ - $(gen-out-type) -o tests -p "test-" $<, \ - " GEN $@") -tests/test-qmp-introspect.c tests/test-qmp-introspect.h :\ -$(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py) - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-introspect.py \ - $(gen-out-type) -o tests -p "test-" $<, \ - " GEN $@") - -tests/test-string-output-visitor$(EXESUF): tests/test-string-output-visitor.o $(test-qapi-obj-y) -tests/test-string-input-visitor$(EXESUF): tests/test-string-input-visitor.o $(test-qapi-obj-y) -tests/test-qmp-event$(EXESUF): tests/test-qmp-event.o $(test-qapi-obj-y) -tests/test-qmp-output-visitor$(EXESUF): tests/test-qmp-output-visitor.o $(test-qapi-obj-y) -tests/test-qmp-input-visitor$(EXESUF): tests/test-qmp-input-visitor.o $(test-qapi-obj-y) -tests/test-qmp-input-strict$(EXESUF): tests/test-qmp-input-strict.o $(test-qapi-obj-y) -tests/test-qmp-commands$(EXESUF): tests/test-qmp-commands.o tests/test-qmp-marshal.o $(test-qapi-obj-y) -tests/test-visitor-serialization$(EXESUF): tests/test-visitor-serialization.o $(test-qapi-obj-y) -tests/test-opts-visitor$(EXESUF): tests/test-opts-visitor.o $(test-qapi-obj-y) - -tests/test-mul64$(EXESUF): tests/test-mul64.o $(test-util-obj-y) -tests/test-bitops$(EXESUF): tests/test-bitops.o $(test-util-obj-y) -tests/test-crypto-hash$(EXESUF): tests/test-crypto-hash.o $(test-crypto-obj-y) -tests/test-crypto-cipher$(EXESUF): tests/test-crypto-cipher.o $(test-crypto-obj-y) -tests/test-crypto-tlscredsx509$(EXESUF): tests/test-crypto-tlscredsx509.o \ - tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y) -tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \ - tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y) - -libqos-obj-y = tests/libqos/pci.o tests/libqos/fw_cfg.o tests/libqos/malloc.o -libqos-obj-y += tests/libqos/i2c.o tests/libqos/libqos.o -libqos-pc-obj-y = $(libqos-obj-y) tests/libqos/pci-pc.o -libqos-pc-obj-y += tests/libqos/malloc-pc.o tests/libqos/libqos-pc.o -libqos-pc-obj-y += tests/libqos/ahci.o -libqos-omap-obj-y = $(libqos-obj-y) tests/libqos/i2c-omap.o -libqos-imx-obj-y = $(libqos-obj-y) tests/libqos/i2c-imx.o -libqos-usb-obj-y = $(libqos-pc-obj-y) tests/libqos/usb.o -libqos-virtio-obj-y = $(libqos-pc-obj-y) tests/libqos/virtio.o tests/libqos/virtio-pci.o tests/libqos/virtio-mmio.o tests/libqos/malloc-generic.o - -tests/rtc-test$(EXESUF): tests/rtc-test.o -tests/m48t59-test$(EXESUF): tests/m48t59-test.o -tests/endianness-test$(EXESUF): tests/endianness-test.o -tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y) -tests/fdc-test$(EXESUF): tests/fdc-test.o -tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y) -tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y) -tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o -tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y) -tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o $(libqos-obj-y) -tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y) -tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y) -tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y) -tests/q35-test$(EXESUF): tests/q35-test.o $(libqos-pc-obj-y) -tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y) -tests/e1000-test$(EXESUF): tests/e1000-test.o -tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o $(libqos-pc-obj-y) -tests/pcnet-test$(EXESUF): tests/pcnet-test.o -tests/eepro100-test$(EXESUF): tests/eepro100-test.o -tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o -tests/ne2000-test$(EXESUF): tests/ne2000-test.o -tests/wdt_ib700-test$(EXESUF): tests/wdt_ib700-test.o -tests/tco-test$(EXESUF): tests/tco-test.o $(libqos-pc-obj-y) -tests/virtio-balloon-test$(EXESUF): tests/virtio-balloon-test.o -tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y) -tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y) -tests/virtio-rng-test$(EXESUF): tests/virtio-rng-test.o $(libqos-pc-obj-y) -tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y) -tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o -tests/virtio-serial-test$(EXESUF): tests/virtio-serial-test.o -tests/virtio-console-test$(EXESUF): tests/virtio-console-test.o -tests/tpci200-test$(EXESUF): tests/tpci200-test.o -tests/display-vga-test$(EXESUF): tests/display-vga-test.o -tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o -tests/qom-test$(EXESUF): tests/qom-test.o -tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-pc-obj-y) -tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y) -tests/nvme-test$(EXESUF): tests/nvme-test.o -tests/pvpanic-test$(EXESUF): tests/pvpanic-test.o -tests/i82801b11-test$(EXESUF): tests/i82801b11-test.o -tests/ac97-test$(EXESUF): tests/ac97-test.o -tests/es1370-test$(EXESUF): tests/es1370-test.o -tests/intel-hda-test$(EXESUF): tests/intel-hda-test.o -tests/ioh3420-test$(EXESUF): tests/ioh3420-test.o -tests/usb-hcd-ohci-test$(EXESUF): tests/usb-hcd-ohci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-uhci-test$(EXESUF): tests/usb-hcd-uhci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-ehci-test$(EXESUF): tests/usb-hcd-ehci-test.o $(libqos-usb-obj-y) -tests/usb-hcd-xhci-test$(EXESUF): tests/usb-hcd-xhci-test.o $(libqos-usb-obj-y) -tests/pc-cpu-test$(EXESUF): tests/pc-cpu-test.o -tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o qemu-char.o qemu-timer.o $(qtest-obj-y) -tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o -tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y) -tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y) - -ifeq ($(CONFIG_POSIX),y) -LIBS += -lutil -endif -LIBS += $(TEST_LIBS) -CFLAGS += $(TEST_CFLAGS) - -# QTest rules - -TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS))) -ifeq ($(CONFIG_POSIX),y) -QTEST_TARGETS=$(foreach TARGET,$(TARGETS), $(if $(check-qtest-$(TARGET)-y), $(TARGET),)) -check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y)) -endif - -qtest-obj-y = tests/libqtest.o $(test-util-obj-y) -$(check-qtest-y): $(qtest-obj-y) - -.PHONY: check-help -check-help: - @echo "Regression testing targets:" - @echo - @echo " make check Run all tests" - @echo " make check-qtest-TARGET Run qtest tests for given target" - @echo " make check-qtest Run qtest tests" - @echo " make check-unit Run qobject tests" - @echo " make check-qapi-schema Run QAPI schema tests" - @echo " make check-block Run block tests" - @echo " make check-report.html Generates an HTML test report" - @echo " make check-clean Clean the tests" - @echo - @echo "Please note that HTML reports do not regenerate if the unit tests" - @echo "has not changed." - @echo - @echo "The variable SPEED can be set to control the gtester speed setting." - @echo "Default options are -k and (for make V=1) --verbose; they can be" - @echo "changed with variable GTESTER_OPTIONS." - -SPEED = quick -GTESTER_OPTIONS = -k $(if $(V),--verbose,-q) -GCOV_OPTIONS = -n $(if $(V),-f,) - -# gtester tests, possibly with verbose output - -.PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS)) -$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y) - $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,) - $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \ - QTEST_QEMU_IMG=qemu-img$(EXESUF) \ - MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \ - gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@") - $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \ - echo Gcov report for $$f:;\ - $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \ - done,) - -.PHONY: $(patsubst %, check-%, $(check-unit-y)) -$(patsubst %, check-%, $(check-unit-y)): check-%: % - $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,) - $(call quiet-command, \ - MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \ - gtester $(GTESTER_OPTIONS) -m=$(SPEED) $*,"GTESTER $*") - $(if $(CONFIG_GCOV),@for f in $(gcov-files-$(subst tests/,,$*)-y); do \ - echo Gcov report for $$f:;\ - $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \ - done,) - -# gtester tests with XML output - -$(patsubst %, check-report-qtest-%.xml, $(QTEST_TARGETS)): check-report-qtest-%.xml: $(check-qtest-y) - $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \ - QTEST_QEMU_IMG=qemu-img$(EXESUF) \ - gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@") - -check-report-unit.xml: $(check-unit-y) - $(call quiet-command,gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $^, "GTESTER $@") - -# Reports and overall runs - -check-report.xml: $(patsubst %,check-report-qtest-%.xml, $(QTEST_TARGETS)) check-report-unit.xml - $(call quiet-command,$(SRC_PATH)/scripts/gtester-cat $^ > $@, " GEN $@") - -check-report.html: check-report.xml - $(call quiet-command,gtester-report $< > $@, " GEN $@") - - -# Other tests - -QEMU_IOTESTS_HELPERS-$(CONFIG_LINUX) = tests/qemu-iotests/socket_scm_helper$(EXESUF) - -.PHONY: check-tests/qemu-iotests-quick.sh -check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) - $< - -.PHONY: check-tests/test-qapi.py -check-tests/test-qapi.py: tests/test-qapi.py - -.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y)) -$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json - $(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \ - $(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \ - $^ >$*.test.out 2>$*.test.err; \ - echo $$? >$*.test.exit, \ - " TEST $*.out") - @diff -q $(SRC_PATH)/$*.out $*.test.out - @# Sanitize error messages (make them independent of build directory) - @perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff -q $(SRC_PATH)/$*.err - - @diff -q $(SRC_PATH)/$*.exit $*.test.exit - -# Consolidated targets - -.PHONY: check-qapi-schema check-qtest check-unit check check-clean -check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) -check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS)) -check-unit: $(patsubst %,check-%, $(check-unit-y)) -check-block: $(patsubst %,check-%, $(check-block-y)) -check: check-qapi-schema check-unit check-qtest -check-clean: - $(MAKE) -C tests/tcg clean - rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y) - rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y))) - -clean: check-clean - -# Build the help program automatically - -all: $(QEMU_IOTESTS_HELPERS-y) - --include $(wildcard tests/*.d) --include $(wildcard tests/libqos/*.d) diff --git a/tests/bios-tables-test.c.orig b/tests/bios-tables-test.c.orig deleted file mode 100644 index d455b2abfce..00000000000 --- a/tests/bios-tables-test.c.orig +++ /dev/null @@ -1,925 +0,0 @@ -/* - * Boot order test cases. - * - * Copyright (c) 2013 Red Hat Inc. - * - * Authors: - * Michael S. Tsirkin , - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -#include "qemu/osdep.h" -#include -#include "qemu-common.h" -#include "hw/firmware/smbios.h" -#include "qemu/bitmap.h" -#include "acpi-utils.h" -#include "boot-sector.h" - -#define MACHINE_PC "pc" -#define MACHINE_Q35 "q35" - -#define ACPI_REBUILD_EXPECTED_AML "TEST_ACPI_REBUILD_AML" - -typedef struct { - const char *machine; - const char *variant; - uint32_t rsdp_addr; - uint8_t rsdp_table[36 /* ACPI 2.0+ RSDP size */]; - AcpiRsdtDescriptorRev1 rsdt_table; - uint32_t dsdt_addr; - uint32_t facs_addr; - AcpiFacsDescriptorRev1 facs_table; - uint32_t *rsdt_tables_addr; - int rsdt_tables_nr; - GArray *tables; - uint32_t smbios_ep_addr; - struct smbios_21_entry_point smbios_ep_table; - uint8_t *required_struct_types; - int required_struct_types_len; - QTestState *qts; -} test_data; - -static char disk[] = "tests/acpi-test-disk-XXXXXX"; -static const char *data_dir = "tests/data/acpi"; -#ifdef CONFIG_IASL -static const char *iasl = stringify(CONFIG_IASL); -#else -static const char *iasl; -#endif - -static void free_test_data(test_data *data) -{ - AcpiSdtTable *temp; - int i; - - g_free(data->rsdt_tables_addr); - - for (i = 0; i < data->tables->len; ++i) { - temp = &g_array_index(data->tables, AcpiSdtTable, i); - g_free(temp->aml); - if (temp->aml_file && - !temp->tmp_files_retain && - g_strstr_len(temp->aml_file, -1, "aml-")) { - unlink(temp->aml_file); - } - g_free(temp->aml_file); - g_free(temp->asl); - if (temp->asl_file && - !temp->tmp_files_retain) { - unlink(temp->asl_file); - } - g_free(temp->asl_file); - } - - g_array_free(data->tables, true); -} - -static void test_acpi_rsdp_address(test_data *data) -{ - uint32_t off = acpi_find_rsdp_address(data->qts); - g_assert_cmphex(off, <, 0x100000); - data->rsdp_addr = off; -} - -static void test_acpi_rsdp_table(test_data *data) -{ - uint8_t *rsdp_table = data->rsdp_table, revision; - uint32_t addr = data->rsdp_addr; - - acpi_parse_rsdp_table(data->qts, addr, rsdp_table); - revision = rsdp_table[15 /* Revision offset */]; - - switch (revision) { - case 0: /* ACPI 1.0 RSDP */ - /* With rev 1, checksum is only for the first 20 bytes */ - g_assert(!acpi_calc_checksum(rsdp_table, 20)); - break; - case 2: /* ACPI 2.0+ RSDP */ - /* With revision 2, we have 2 checksums */ - g_assert(!acpi_calc_checksum(rsdp_table, 20)); - g_assert(!acpi_calc_checksum(rsdp_table, 36)); - break; - default: - g_assert_not_reached(); - } -} - -static void test_acpi_rsdt_table(test_data *data) -{ - AcpiRsdtDescriptorRev1 *rsdt_table = &data->rsdt_table; - uint32_t addr = acpi_get_rsdt_address(data->rsdp_table); - uint32_t *tables; - int tables_nr; - uint8_t checksum; - uint32_t rsdt_table_length; - - /* read the header */ - ACPI_READ_TABLE_HEADER(data->qts, rsdt_table, addr); - ACPI_ASSERT_CMP(rsdt_table->signature, "RSDT"); - - rsdt_table_length = le32_to_cpu(rsdt_table->length); - - /* compute the table entries in rsdt */ - tables_nr = (rsdt_table_length - sizeof(AcpiRsdtDescriptorRev1)) / - sizeof(uint32_t); - g_assert(tables_nr > 0); - - /* get the addresses of the tables pointed by rsdt */ - tables = g_new0(uint32_t, tables_nr); - ACPI_READ_ARRAY_PTR(data->qts, tables, tables_nr, addr); - - checksum = acpi_calc_checksum((uint8_t *)rsdt_table, rsdt_table_length) + - acpi_calc_checksum((uint8_t *)tables, - tables_nr * sizeof(uint32_t)); - g_assert(!checksum); - - /* SSDT tables after FADT */ - data->rsdt_tables_addr = tables; - data->rsdt_tables_nr = tables_nr; -} - -static void fadt_fetch_facs_and_dsdt_ptrs(test_data *data) -{ - uint32_t addr; - AcpiTableHeader hdr; - - /* FADT table comes first */ - addr = le32_to_cpu(data->rsdt_tables_addr[0]); - ACPI_READ_TABLE_HEADER(data->qts, &hdr, addr); - ACPI_ASSERT_CMP(hdr.signature, "FACP"); - - ACPI_READ_FIELD(data->qts, data->facs_addr, addr); - ACPI_READ_FIELD(data->qts, data->dsdt_addr, addr); -} - -static void sanitize_fadt_ptrs(test_data *data) -{ - /* fixup pointers in FADT */ - int i; - - for (i = 0; i < data->tables->len; i++) { - AcpiSdtTable *sdt = &g_array_index(data->tables, AcpiSdtTable, i); - - if (memcmp(&sdt->header.signature, "FACP", 4)) { - continue; - } - - /* check original FADT checksum before sanitizing table */ - g_assert(!(uint8_t)( - acpi_calc_checksum((uint8_t *)sdt, sizeof(AcpiTableHeader)) + - acpi_calc_checksum((uint8_t *)sdt->aml, sdt->aml_len) - )); - - /* sdt->aml field offset := spec offset - header size */ - memset(sdt->aml + 0, 0, 4); /* sanitize FIRMWARE_CTRL(36) ptr */ - memset(sdt->aml + 4, 0, 4); /* sanitize DSDT(40) ptr */ - if (sdt->header.revision >= 3) { - memset(sdt->aml + 96, 0, 8); /* sanitize X_FIRMWARE_CTRL(132) ptr */ - memset(sdt->aml + 104, 0, 8); /* sanitize X_DSDT(140) ptr */ - } - - /* update checksum */ - sdt->header.checksum = 0; - sdt->header.checksum -= - acpi_calc_checksum((uint8_t *)sdt, sizeof(AcpiTableHeader)) + - acpi_calc_checksum((uint8_t *)sdt->aml, sdt->aml_len); - break; - } -} - -static void test_acpi_facs_table(test_data *data) -{ - AcpiFacsDescriptorRev1 *facs_table = &data->facs_table; - uint32_t addr = le32_to_cpu(data->facs_addr); - - ACPI_READ_FIELD(data->qts, facs_table->signature, addr); - ACPI_READ_FIELD(data->qts, facs_table->length, addr); - ACPI_READ_FIELD(data->qts, facs_table->hardware_signature, addr); - ACPI_READ_FIELD(data->qts, facs_table->firmware_waking_vector, addr); - ACPI_READ_FIELD(data->qts, facs_table->global_lock, addr); - ACPI_READ_FIELD(data->qts, facs_table->flags, addr); - ACPI_READ_ARRAY(data->qts, facs_table->resverved3, addr); - - ACPI_ASSERT_CMP(facs_table->signature, "FACS"); -} - -/** fetch_table - * load ACPI table at @addr into table descriptor @sdt_table - * and check that header checksum matches actual one. - */ -static void fetch_table(QTestState *qts, AcpiSdtTable *sdt_table, uint32_t addr) -{ - uint8_t checksum; - - memset(sdt_table, 0, sizeof(*sdt_table)); - ACPI_READ_TABLE_HEADER(qts, &sdt_table->header, addr); - - sdt_table->aml_len = le32_to_cpu(sdt_table->header.length) - - sizeof(AcpiTableHeader); - sdt_table->aml = g_malloc0(sdt_table->aml_len); - ACPI_READ_ARRAY_PTR(qts, sdt_table->aml, sdt_table->aml_len, addr); - - checksum = acpi_calc_checksum((uint8_t *)sdt_table, - sizeof(AcpiTableHeader)) + - acpi_calc_checksum((uint8_t *)sdt_table->aml, - sdt_table->aml_len); - g_assert(!checksum); -} - -static void test_acpi_dsdt_table(test_data *data) -{ - AcpiSdtTable dsdt_table; - uint32_t addr = le32_to_cpu(data->dsdt_addr); - - fetch_table(data->qts, &dsdt_table, addr); - ACPI_ASSERT_CMP(dsdt_table.header.signature, "DSDT"); - - /* Since DSDT isn't in RSDT, add DSDT to ASL test tables list manually */ - g_array_append_val(data->tables, dsdt_table); -} - -/* Load all tables and add to test list directly RSDT referenced tables */ -static void fetch_rsdt_referenced_tables(test_data *data) -{ - int tables_nr = data->rsdt_tables_nr; - int i; - - for (i = 0; i < tables_nr; i++) { - AcpiSdtTable ssdt_table; - uint32_t addr; - - addr = le32_to_cpu(data->rsdt_tables_addr[i]); - fetch_table(data->qts, &ssdt_table, addr); - - /* Add table to ASL test tables list */ - g_array_append_val(data->tables, ssdt_table); - } -} - -static void dump_aml_files(test_data *data, bool rebuild) -{ - AcpiSdtTable *sdt; - GError *error = NULL; - gchar *aml_file = NULL; - gint fd; - ssize_t ret; - int i; - - for (i = 0; i < data->tables->len; ++i) { - const char *ext = data->variant ? data->variant : ""; - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - g_assert(sdt->aml); - - if (rebuild) { - aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine, - (gchar *)&sdt->header.signature, ext); - fd = g_open(aml_file, O_WRONLY|O_TRUNC|O_CREAT, - S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH); - } else { - fd = g_file_open_tmp("aml-XXXXXX", &sdt->aml_file, &error); - g_assert_no_error(error); - } - g_assert(fd >= 0); - - ret = qemu_write_full(fd, sdt, sizeof(AcpiTableHeader)); - g_assert(ret == sizeof(AcpiTableHeader)); - ret = qemu_write_full(fd, sdt->aml, sdt->aml_len); - g_assert(ret == sdt->aml_len); - - close(fd); - - g_free(aml_file); - } -} - -static bool compare_signature(AcpiSdtTable *sdt, const char *signature) -{ - return !memcmp(&sdt->header.signature, signature, 4); -} - -static bool load_asl(GArray *sdts, AcpiSdtTable *sdt) -{ - AcpiSdtTable *temp; - GError *error = NULL; - GString *command_line = g_string_new(iasl); - gint fd; - gchar *out, *out_err; - gboolean ret; - int i; - - fd = g_file_open_tmp("asl-XXXXXX.dsl", &sdt->asl_file, &error); - g_assert_no_error(error); - close(fd); - - /* build command line */ - g_string_append_printf(command_line, " -p %s ", sdt->asl_file); - if (compare_signature(sdt, "DSDT") || - compare_signature(sdt, "SSDT")) { - for (i = 0; i < sdts->len; ++i) { - temp = &g_array_index(sdts, AcpiSdtTable, i); - if (compare_signature(temp, "DSDT") || - compare_signature(temp, "SSDT")) { - g_string_append_printf(command_line, "-e %s ", temp->aml_file); - } - } - } - g_string_append_printf(command_line, "-d %s", sdt->aml_file); - - /* pass 'out' and 'out_err' in order to be redirected */ - ret = g_spawn_command_line_sync(command_line->str, &out, &out_err, NULL, &error); - g_assert_no_error(error); - if (ret) { - ret = g_file_get_contents(sdt->asl_file, &sdt->asl, - &sdt->asl_len, &error); - g_assert(ret); - g_assert_no_error(error); - ret = (sdt->asl_len > 0); - } - - g_free(out); - g_free(out_err); - g_string_free(command_line, true); - - return !ret; -} - -#define COMMENT_END "*/" -#define DEF_BLOCK "DefinitionBlock (" -#define BLOCK_NAME_END "," - -static GString *normalize_asl(gchar *asl_code) -{ - GString *asl = g_string_new(asl_code); - gchar *comment, *block_name; - - /* strip comments (different generation days) */ - comment = g_strstr_len(asl->str, asl->len, COMMENT_END); - if (comment) { - comment += strlen(COMMENT_END); - while (*comment == '\n') { - comment++; - } - asl = g_string_erase(asl, 0, comment - asl->str); - } - - /* strip def block name (it has file path in it) */ - if (g_str_has_prefix(asl->str, DEF_BLOCK)) { - block_name = g_strstr_len(asl->str, asl->len, BLOCK_NAME_END); - g_assert(block_name); - asl = g_string_erase(asl, 0, - block_name + sizeof(BLOCK_NAME_END) - asl->str); - } - - return asl; -} - -static GArray *load_expected_aml(test_data *data) -{ - int i; - AcpiSdtTable *sdt; - GError *error = NULL; - gboolean ret; - - GArray *exp_tables = g_array_new(false, true, sizeof(AcpiSdtTable)); - if (getenv("V")) { - fputc('\n', stderr); - } - for (i = 0; i < data->tables->len; ++i) { - AcpiSdtTable exp_sdt; - gchar *aml_file = NULL; - const char *ext = data->variant ? data->variant : ""; - - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - - memset(&exp_sdt, 0, sizeof(exp_sdt)); - exp_sdt.header.signature = sdt->header.signature; - -try_again: - aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine, - (gchar *)&sdt->header.signature, ext); - if (getenv("V")) { - fprintf(stderr, "Looking for expected file '%s'\n", aml_file); - } - if (g_file_test(aml_file, G_FILE_TEST_EXISTS)) { - exp_sdt.aml_file = aml_file; - } else if (*ext != '\0') { - /* try fallback to generic (extension less) expected file */ - ext = ""; - g_free(aml_file); - goto try_again; - } - g_assert(exp_sdt.aml_file); - if (getenv("V")) { - fprintf(stderr, "Using expected file '%s'\n", aml_file); - } - ret = g_file_get_contents(aml_file, &exp_sdt.aml, - &exp_sdt.aml_len, &error); - g_assert(ret); - g_assert_no_error(error); - g_assert(exp_sdt.aml); - g_assert(exp_sdt.aml_len); - - g_array_append_val(exp_tables, exp_sdt); - } - - return exp_tables; -} - -/* test the list of tables in @data->tables against reference tables */ -static void test_acpi_asl(test_data *data) -{ - int i; - AcpiSdtTable *sdt, *exp_sdt; - test_data exp_data; - gboolean exp_err, err; - - memset(&exp_data, 0, sizeof(exp_data)); - exp_data.tables = load_expected_aml(data); - dump_aml_files(data, false); - for (i = 0; i < data->tables->len; ++i) { - GString *asl, *exp_asl; - - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i); - - err = load_asl(data->tables, sdt); - asl = normalize_asl(sdt->asl); - - exp_err = load_asl(exp_data.tables, exp_sdt); - exp_asl = normalize_asl(exp_sdt->asl); - - /* TODO: check for warnings */ - g_assert(!err || exp_err); - - if (g_strcmp0(asl->str, exp_asl->str)) { - if (exp_err) { - fprintf(stderr, - "Warning! iasl couldn't parse the expected aml\n"); - } else { - uint32_t signature = cpu_to_le32(exp_sdt->header.signature); - sdt->tmp_files_retain = true; - exp_sdt->tmp_files_retain = true; - fprintf(stderr, - "acpi-test: Warning! %.4s mismatch. " - "Actual [asl:%s, aml:%s], Expected [asl:%s, aml:%s].\n", - (gchar *)&signature, - sdt->asl_file, sdt->aml_file, - exp_sdt->asl_file, exp_sdt->aml_file); - if (getenv("V")) { - const char *diff_cmd = getenv("DIFF"); - if (diff_cmd) { - int ret G_GNUC_UNUSED; - char *diff = g_strdup_printf("%s %s %s", diff_cmd, - exp_sdt->asl_file, sdt->asl_file); - ret = system(diff) ; - g_free(diff); - } else { - fprintf(stderr, "acpi-test: Warning. not showing " - "difference since no diff utility is specified. " - "Set 'DIFF' environment variable to a preferred " - "diff utility and run 'make V=1 check' again to " - "see ASL difference."); - } - } - } - } - g_string_free(asl, true); - g_string_free(exp_asl, true); - } - - free_test_data(&exp_data); -} - -static bool smbios_ep_table_ok(test_data *data) -{ - struct smbios_21_entry_point *ep_table = &data->smbios_ep_table; - uint32_t addr = data->smbios_ep_addr; - - ACPI_READ_ARRAY(data->qts, ep_table->anchor_string, addr); - if (memcmp(ep_table->anchor_string, "_SM_", 4)) { - return false; - } - ACPI_READ_FIELD(data->qts, ep_table->checksum, addr); - ACPI_READ_FIELD(data->qts, ep_table->length, addr); - ACPI_READ_FIELD(data->qts, ep_table->smbios_major_version, addr); - ACPI_READ_FIELD(data->qts, ep_table->smbios_minor_version, addr); - ACPI_READ_FIELD(data->qts, ep_table->max_structure_size, addr); - ACPI_READ_FIELD(data->qts, ep_table->entry_point_revision, addr); - ACPI_READ_ARRAY(data->qts, ep_table->formatted_area, addr); - ACPI_READ_ARRAY(data->qts, ep_table->intermediate_anchor_string, addr); - if (memcmp(ep_table->intermediate_anchor_string, "_DMI_", 5)) { - return false; - } - ACPI_READ_FIELD(data->qts, ep_table->intermediate_checksum, addr); - ACPI_READ_FIELD(data->qts, ep_table->structure_table_length, addr); - if (ep_table->structure_table_length == 0) { - return false; - } - ACPI_READ_FIELD(data->qts, ep_table->structure_table_address, addr); - ACPI_READ_FIELD(data->qts, ep_table->number_of_structures, addr); - if (ep_table->number_of_structures == 0) { - return false; - } - ACPI_READ_FIELD(data->qts, ep_table->smbios_bcd_revision, addr); - if (acpi_calc_checksum((uint8_t *)ep_table, sizeof *ep_table) || - acpi_calc_checksum((uint8_t *)ep_table + 0x10, - sizeof *ep_table - 0x10)) { - return false; - } - return true; -} - -static void test_smbios_entry_point(test_data *data) -{ - uint32_t off; - - /* find smbios entry point structure */ - for (off = 0xf0000; off < 0x100000; off += 0x10) { - uint8_t sig[] = "_SM_"; - int i; - - for (i = 0; i < sizeof sig - 1; ++i) { - sig[i] = qtest_readb(data->qts, off + i); - } - - if (!memcmp(sig, "_SM_", sizeof sig)) { - /* signature match, but is this a valid entry point? */ - data->smbios_ep_addr = off; - if (smbios_ep_table_ok(data)) { - break; - } - } - } - - g_assert_cmphex(off, <, 0x100000); -} - -static inline bool smbios_single_instance(uint8_t type) -{ - switch (type) { - case 0: - case 1: - case 2: - case 3: - case 16: - case 32: - case 127: - return true; - default: - return false; - } -} - -static void test_smbios_structs(test_data *data) -{ - DECLARE_BITMAP(struct_bitmap, SMBIOS_MAX_TYPE+1) = { 0 }; - struct smbios_21_entry_point *ep_table = &data->smbios_ep_table; - uint32_t addr = le32_to_cpu(ep_table->structure_table_address); - int i, len, max_len = 0; - uint8_t type, prv, crt; - - /* walk the smbios tables */ - for (i = 0; i < le16_to_cpu(ep_table->number_of_structures); i++) { - - /* grab type and formatted area length from struct header */ - type = qtest_readb(data->qts, addr); - g_assert_cmpuint(type, <=, SMBIOS_MAX_TYPE); - len = qtest_readb(data->qts, addr + 1); - - /* single-instance structs must not have been encountered before */ - if (smbios_single_instance(type)) { - g_assert(!test_bit(type, struct_bitmap)); - } - set_bit(type, struct_bitmap); - - /* seek to end of unformatted string area of this struct ("\0\0") */ - prv = crt = 1; - while (prv || crt) { - prv = crt; - crt = qtest_readb(data->qts, addr + len); - len++; - } - - /* keep track of max. struct size */ - if (max_len < len) { - max_len = len; - g_assert_cmpuint(max_len, <=, ep_table->max_structure_size); - } - - /* start of next structure */ - addr += len; - } - - /* total table length and max struct size must match entry point values */ - g_assert_cmpuint(le16_to_cpu(ep_table->structure_table_length), ==, - addr - le32_to_cpu(ep_table->structure_table_address)); - g_assert_cmpuint(le16_to_cpu(ep_table->max_structure_size), ==, max_len); - - /* required struct types must all be present */ - for (i = 0; i < data->required_struct_types_len; i++) { - g_assert(test_bit(data->required_struct_types[i], struct_bitmap)); - } -} - -static void test_acpi_one(const char *params, test_data *data) -{ - char *args; - - /* Disable kernel irqchip to be able to override apic irq0. */ - args = g_strdup_printf("-machine %s,accel=%s,kernel-irqchip=off " - "-net none -display none %s " - "-drive id=hd0,if=none,file=%s,format=raw " - "-device ide-hd,drive=hd0 ", - data->machine, "kvm:tcg", - params ? params : "", disk); - - data->qts = qtest_init(args); - - boot_sector_test(data->qts); - - data->tables = g_array_new(false, true, sizeof(AcpiSdtTable)); - test_acpi_rsdp_address(data); - test_acpi_rsdp_table(data); - test_acpi_rsdt_table(data); - fadt_fetch_facs_and_dsdt_ptrs(data); - test_acpi_facs_table(data); - test_acpi_dsdt_table(data); - fetch_rsdt_referenced_tables(data); - - sanitize_fadt_ptrs(data); - - if (iasl) { - if (getenv(ACPI_REBUILD_EXPECTED_AML)) { - dump_aml_files(data, true); - } else { - test_acpi_asl(data); - } - } - - test_smbios_entry_point(data); - test_smbios_structs(data); - - assert(!global_qtest); - qtest_quit(data->qts); - g_free(args); -} - -static uint8_t base_required_struct_types[] = { - 0, 1, 3, 4, 16, 17, 19, 32, 127 -}; - -static void test_acpi_piix4_tcg(void) -{ - test_data data; - - /* Supplying -machine accel argument overrides the default (qtest). - * This is to make guest actually run. - */ - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one(NULL, &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_bridge(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".bridge"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-device pci-bridge,chassis_nr=1", &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one(NULL, &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_bridge(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".bridge"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-device pci-bridge,chassis_nr=1", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_mmio64(void) -{ - test_data data = { - .machine = MACHINE_Q35, - .variant = ".mmio64", - .required_struct_types = base_required_struct_types, - .required_struct_types_len = ARRAY_SIZE(base_required_struct_types) - }; - - test_acpi_one("-m 128M,slots=1,maxmem=2G " - "-device pci-testdev,membar=2G", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_cphp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".cphp"; - test_acpi_one("-smp 2,cores=3,sockets=2,maxcpus=6" - " -numa node -numa node" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_cphp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".cphp"; - test_acpi_one(" -smp 2,cores=3,sockets=2,maxcpus=6" - " -numa node -numa node" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static uint8_t ipmi_required_struct_types[] = { - 0, 1, 3, 4, 16, 17, 19, 32, 38, 127 -}; - -static void test_acpi_q35_tcg_ipmi(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".ipmibt"; - data.required_struct_types = ipmi_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types); - test_acpi_one("-device ipmi-bmc-sim,id=bmc0" - " -device isa-ipmi-bt,bmc=bmc0", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_ipmi(void) -{ - test_data data; - - /* Supplying -machine accel argument overrides the default (qtest). - * This is to make guest actually run. - */ - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".ipmikcs"; - data.required_struct_types = ipmi_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types); - test_acpi_one("-device ipmi-bmc-sim,id=bmc0" - " -device isa-ipmi-kcs,irq=0,bmc=bmc0", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_memhp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".memhp"; - test_acpi_one(" -m 128,slots=3,maxmem=1G" - " -numa node -numa node" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_memhp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".memhp"; - test_acpi_one(" -m 128,slots=3,maxmem=1G" - " -numa node -numa node" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_numamem(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".numamem"; - test_acpi_one(" -numa node -numa node,mem=128", &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_numamem(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".numamem"; - test_acpi_one(" -numa node -numa node,mem=128", &data); - free_test_data(&data); -} - -static void test_acpi_tcg_dimm_pxm(const char *machine) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = machine; - data.variant = ".dimmpxm"; - test_acpi_one(" -machine nvdimm=on,nvdimm-persistence=cpu" - " -smp 4,sockets=4" - " -m 128M,slots=3,maxmem=1G" - " -numa node,mem=32M,nodeid=0" - " -numa node,mem=32M,nodeid=1" - " -numa node,mem=32M,nodeid=2" - " -numa node,mem=32M,nodeid=3" - " -numa cpu,node-id=0,socket-id=0" - " -numa cpu,node-id=1,socket-id=1" - " -numa cpu,node-id=2,socket-id=2" - " -numa cpu,node-id=3,socket-id=3" - " -object memory-backend-ram,id=ram0,size=128M" - " -object memory-backend-ram,id=nvm0,size=128M" - " -device pc-dimm,id=dimm0,memdev=ram0,node=1" - " -device nvdimm,id=dimm1,memdev=nvm0,node=2", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_dimm_pxm(void) -{ - test_acpi_tcg_dimm_pxm(MACHINE_Q35); -} - -static void test_acpi_piix4_tcg_dimm_pxm(void) -{ - test_acpi_tcg_dimm_pxm(MACHINE_PC); -} - -int main(int argc, char *argv[]) -{ - const char *arch = qtest_get_arch(); - int ret; - - ret = boot_sector_init(disk); - if(ret) - return ret; - - g_test_init(&argc, &argv, NULL); - - if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { - qtest_add_func("acpi/piix4", test_acpi_piix4_tcg); - qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge); - qtest_add_func("acpi/q35", test_acpi_q35_tcg); - qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge); - qtest_add_func("acpi/q35/mmio64", test_acpi_q35_tcg_mmio64); - qtest_add_func("acpi/piix4/ipmi", test_acpi_piix4_tcg_ipmi); - qtest_add_func("acpi/q35/ipmi", test_acpi_q35_tcg_ipmi); - qtest_add_func("acpi/piix4/cpuhp", test_acpi_piix4_tcg_cphp); - qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp); - qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp); - qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp); - qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem); - qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem); - qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm); - qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm); - } - ret = g_test_run(); - boot_sector_cleanup(disk); - return ret; -} diff --git a/tests/data/acpi/diff-aml.sh b/tests/data/acpi/diff-aml.sh deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tests/data/acpi/disassemle-aml.py b/tests/data/acpi/disassemle-aml.py deleted file mode 100644 index 0398fada63e..00000000000 --- a/tests/data/acpi/disassemle-aml.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/python - -import os, re -root = "tests/data/acpi" -for machine in os.listdir(root): - machine_root = os.path.join(root, machine) - if not os.path.isdir(machine_root): - continue - files = os.listdir(machine_root): - for file in files: - if file.endswith(".dsl"): - continue - extension_prefix = "^[^.]*\." - if re.match(extension_prefix, file): - variant = re.sub(extension_prefix, "", file) - - -for dirpath, dirnames, filenames in os.walk("tests/data/acpi"): - for file in files: - if file.endswith(".txt"): - print(os.path.join(root, file)) diff --git a/tests/data/acpi/microvm/APIC.dsl b/tests/data/acpi/microvm/APIC.dsl deleted file mode 100644 index 02f56dce434..00000000000 --- a/tests/data/acpi/microvm/APIC.dsl +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/microvm/APIC, Mon Sep 28 17:24:38 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000046 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : D7 -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 04 [Local APIC NMI] -[041h 0065 1] Length : 06 -[042h 0066 1] Processor ID : FF -[043h 0067 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[045h 0069 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 70 (0x46) - - 0000: 41 50 49 43 46 00 00 00 01 D7 42 4F 43 48 53 20 // APICF.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 04 06 FF 00 00 01 // ...... diff --git a/tests/data/acpi/microvm/DSDT.dsl b/tests/data/acpi/microvm/DSDT.dsl deleted file mode 100644 index fd53f081281..00000000000 --- a/tests/data/acpi/microvm/DSDT.dsl +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/microvm/DSDT, Mon Sep 28 17:24:38 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000016D (365) - * Revision 0x02 - * Checksum 0x62 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 2, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (_SB) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (GED) - { - Name (_HID, "ACPI0013" /* Generic Event Device */) // _HID: Hardware ID - Name (_UID, "GED") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) - { - 0x00000009, - } - }) - OperationRegion (EREG, SystemMemory, 0xFEA00000, 0x04) - Field (EREG, DWordAcc, NoLock, WriteAsZeros) - { - ESEL, 32 - } - - Method (_EVT, 1, Serialized) // _EVT: Event - { - Local0 = ESEL /* \_SB_.GED_.ESEL */ - If (((Local0 & 0x02) == 0x02)) - { - Notify (PWRB, 0x80) // Status Change - } - } - } - - Device (PWRB) - { - Name (_HID, "PNP0C0C" /* Power Button Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - } - - Device (VR07) - { - Name (_HID, "LNRO0005") // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_CCA, One) // _CCA: Cache Coherency Attribute - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadWrite, - 0xFEB00E00, // Address Base - 0x00000200, // Address Length - ) - Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) - { - 0x00000017, - } - }) - } - } - - Scope (\) - { - Name (_S5, Package (0x04) // _S5_: S5 System State - { - 0x05, - Zero, - Zero, - Zero - }) - } -} - diff --git a/tests/data/acpi/microvm/FACP.dsl b/tests/data/acpi/microvm/FACP.dsl deleted file mode 100644 index 4cf780caec1..00000000000 --- a/tests/data/acpi/microvm/FACP.dsl +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/microvm/FACP, Mon Sep 28 17:24:38 2020 - * - * ACPI Data Table [FACP] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "FACP" [Fixed ACPI Description Table (FADT)] -[004h 0004 4] Table Length : 0000010C -[008h 0008 1] Revision : 05 -[009h 0009 1] Checksum : 7E -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCFACP" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] FACS Address : 00000000 -[028h 0040 4] DSDT Address : 00000000 -[02Ch 0044 1] Model : 00 -[02Dh 0045 1] PM Profile : 00 [Unspecified] -[02Eh 0046 2] SCI Interrupt : 0000 -[030h 0048 4] SMI Command Port : 00000000 -[034h 0052 1] ACPI Enable Value : 00 -[035h 0053 1] ACPI Disable Value : 00 -[036h 0054 1] S4BIOS Command : 00 -[037h 0055 1] P-State Control : 00 -[038h 0056 4] PM1A Event Block Address : 00000000 -[03Ch 0060 4] PM1B Event Block Address : 00000000 -[040h 0064 4] PM1A Control Block Address : 00000000 -[044h 0068 4] PM1B Control Block Address : 00000000 -[048h 0072 4] PM2 Control Block Address : 00000000 -[04Ch 0076 4] PM Timer Block Address : 00000000 -[050h 0080 4] GPE0 Block Address : 00000000 -[054h 0084 4] GPE1 Block Address : 00000000 -[058h 0088 1] PM1 Event Block Length : 00 -[059h 0089 1] PM1 Control Block Length : 00 -[05Ah 0090 1] PM2 Control Block Length : 00 -[05Bh 0091 1] PM Timer Block Length : 00 -[05Ch 0092 1] GPE0 Block Length : 00 -[05Dh 0093 1] GPE1 Block Length : 00 -[05Eh 0094 1] GPE1 Base Offset : 00 -[05Fh 0095 1] _CST Support : 00 -[060h 0096 2] C2 Latency : 0000 -[062h 0098 2] C3 Latency : 0000 -[064h 0100 2] CPU Cache Size : 0000 -[066h 0102 2] Cache Flush Stride : 0000 -[068h 0104 1] Duty Cycle Offset : 00 -[069h 0105 1] Duty Cycle Width : 00 -[06Ah 0106 1] RTC Day Alarm Index : 00 -[06Bh 0107 1] RTC Month Alarm Index : 00 -[06Ch 0108 1] RTC Century Index : 00 -[06Dh 0109 2] Boot Flags (decoded below) : 0000 - Legacy Devices Supported (V2) : 0 - 8042 Present on ports 60/64 (V2) : 0 - VGA Not Present (V4) : 0 - MSI Not Supported (V4) : 0 - PCIe ASPM Not Supported (V4) : 0 - CMOS RTC Not Present (V5) : 0 -[06Fh 0111 1] Reserved : 00 -[070h 0112 4] Flags (decoded below) : 00100400 - WBINVD instruction is operational (V1) : 0 - WBINVD flushes all caches (V1) : 0 - All CPUs support C1 (V1) : 0 - C2 works on MP system (V1) : 0 - Control Method Power Button (V1) : 0 - Control Method Sleep Button (V1) : 0 - RTC wake not in fixed reg space (V1) : 0 - RTC can wake system from S4 (V1) : 0 - 32-bit PM Timer (V1) : 0 - Docking Supported (V1) : 0 - Reset Register Supported (V2) : 1 - Sealed Case (V3) : 0 - Headless - No Video (V3) : 0 - Use native instr after SLP_TYPx (V3) : 0 - PCIEXP_WAK Bits Supported (V4) : 0 - Use Platform Timer (V4) : 0 - RTC_STS valid on S4 wake (V4) : 0 - Remote Power-on capable (V4) : 0 - Use APIC Cluster Model (V4) : 0 - Use APIC Physical Destination Mode (V4) : 0 - Hardware Reduced (V5) : 1 - Low Power S0 Idle (V5) : 0 - -[074h 0116 12] Reset Register : [Generic Address Structure] -[074h 0116 1] Space ID : 00 [SystemMemory] -[075h 0117 1] Bit Width : 08 -[076h 0118 1] Bit Offset : 00 -[077h 0119 1] Encoded Access Width : 00 [Undefined/Legacy] -[078h 0120 8] Address : 00000000FEA00202 - -[080h 0128 1] Value to cause reset : 42 -[081h 0129 2] ARM Flags (decoded below) : 0000 - PSCI Compliant : 0 - Must use HVC for PSCI : 0 - -[083h 0131 1] FADT Minor Revision : 00 -[084h 0132 8] FACS Address : 0000000000000000 -[08Ch 0140 8] DSDT Address : 0000000000000000 -[094h 0148 12] PM1A Event Block : [Generic Address Structure] -[094h 0148 1] Space ID : 00 [SystemMemory] -[095h 0149 1] Bit Width : 00 -[096h 0150 1] Bit Offset : 00 -[097h 0151 1] Encoded Access Width : 00 [Undefined/Legacy] -[098h 0152 8] Address : 0000000000000000 - -[0A0h 0160 12] PM1B Event Block : [Generic Address Structure] -[0A0h 0160 1] Space ID : 00 [SystemMemory] -[0A1h 0161 1] Bit Width : 00 -[0A2h 0162 1] Bit Offset : 00 -[0A3h 0163 1] Encoded Access Width : 00 [Undefined/Legacy] -[0A4h 0164 8] Address : 0000000000000000 - -[0ACh 0172 12] PM1A Control Block : [Generic Address Structure] -[0ACh 0172 1] Space ID : 00 [SystemMemory] -[0ADh 0173 1] Bit Width : 00 -[0AEh 0174 1] Bit Offset : 00 -[0AFh 0175 1] Encoded Access Width : 00 [Undefined/Legacy] -[0B0h 0176 8] Address : 0000000000000000 - -[0B8h 0184 12] PM1B Control Block : [Generic Address Structure] -[0B8h 0184 1] Space ID : 00 [SystemMemory] -[0B9h 0185 1] Bit Width : 00 -[0BAh 0186 1] Bit Offset : 00 -[0BBh 0187 1] Encoded Access Width : 00 [Undefined/Legacy] -[0BCh 0188 8] Address : 0000000000000000 - -[0C4h 0196 12] PM2 Control Block : [Generic Address Structure] -[0C4h 0196 1] Space ID : 00 [SystemMemory] -[0C5h 0197 1] Bit Width : 00 -[0C6h 0198 1] Bit Offset : 00 -[0C7h 0199 1] Encoded Access Width : 00 [Undefined/Legacy] -[0C8h 0200 8] Address : 0000000000000000 - -[0D0h 0208 12] PM Timer Block : [Generic Address Structure] -[0D0h 0208 1] Space ID : 00 [SystemMemory] -[0D1h 0209 1] Bit Width : 00 -[0D2h 0210 1] Bit Offset : 00 -[0D3h 0211 1] Encoded Access Width : 00 [Undefined/Legacy] -[0D4h 0212 8] Address : 0000000000000000 - -[0DCh 0220 12] GPE0 Block : [Generic Address Structure] -[0DCh 0220 1] Space ID : 00 [SystemMemory] -[0DDh 0221 1] Bit Width : 00 -[0DEh 0222 1] Bit Offset : 00 -[0DFh 0223 1] Encoded Access Width : 00 [Undefined/Legacy] -[0E0h 0224 8] Address : 0000000000000000 - -[0E8h 0232 12] GPE1 Block : [Generic Address Structure] -[0E8h 0232 1] Space ID : 00 [SystemMemory] -[0E9h 0233 1] Bit Width : 00 -[0EAh 0234 1] Bit Offset : 00 -[0EBh 0235 1] Encoded Access Width : 00 [Undefined/Legacy] -[0ECh 0236 8] Address : 0000000000000000 - - -[0F4h 0244 12] Sleep Control Register : [Generic Address Structure] -[0F4h 0244 1] Space ID : 00 [SystemMemory] -[0F5h 0245 1] Bit Width : 08 -[0F6h 0246 1] Bit Offset : 00 -[0F7h 0247 1] Encoded Access Width : 00 [Undefined/Legacy] -[0F8h 0248 8] Address : 00000000FEA00200 - -[100h 0256 12] Sleep Status Register : [Generic Address Structure] -[100h 0256 1] Space ID : 00 [SystemMemory] -[101h 0257 1] Bit Width : 08 -[102h 0258 1] Bit Offset : 00 -[103h 0259 1] Encoded Access Width : 00 [Undefined/Legacy] -[104h 0260 8] Address : 00000000FEA00201 - -/**** ACPI table terminates in the middle of a data structure! (dump table) */ - -Raw Table Data: Length 268 (0x10C) - - 0000: 46 41 43 50 0C 01 00 00 05 7E 42 4F 43 48 53 20 // FACP.....~BOCHS - 0010: 42 58 50 43 46 41 43 50 01 00 00 00 42 58 50 43 // BXPCFACP....BXPC - 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 0070: 00 04 10 00 00 08 00 00 02 02 A0 FE 00 00 00 00 // ................ - 0080: 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // B............... - 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ - 00F0: 00 00 00 00 00 08 00 00 00 02 A0 FE 00 00 00 00 // ................ - 0100: 00 08 00 00 01 02 A0 FE 00 00 00 00 // ............ diff --git a/tests/data/acpi/pc/APIC.acpihmat.dsl b/tests/data/acpi/pc/APIC.acpihmat.dsl deleted file mode 100644 index 15155cac553..00000000000 --- a/tests/data/acpi/pc/APIC.acpihmat.dsl +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.acpihmat, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000080 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : DA -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 00 [Processor Local APIC] -[035h 0053 1] Length : 08 -[036h 0054 1] Processor ID : 01 -[037h 0055 1] Local Apic ID : 01 -[038h 0056 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[03Ch 0060 1] Subtable Type : 01 [I/O APIC] -[03Dh 0061 1] Length : 0C -[03Eh 0062 1] I/O Apic ID : 00 -[03Fh 0063 1] Reserved : 00 -[040h 0064 4] Address : FEC00000 -[044h 0068 4] Interrupt : 00000000 - -[048h 0072 1] Subtable Type : 02 [Interrupt Source Override] -[049h 0073 1] Length : 0A -[04Ah 0074 1] Bus : 00 -[04Bh 0075 1] Source : 00 -[04Ch 0076 4] Interrupt : 00000002 -[050h 0080 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[052h 0082 1] Subtable Type : 02 [Interrupt Source Override] -[053h 0083 1] Length : 0A -[054h 0084 1] Bus : 00 -[055h 0085 1] Source : 05 -[056h 0086 4] Interrupt : 00000005 -[05Ah 0090 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Ch 0092 1] Subtable Type : 02 [Interrupt Source Override] -[05Dh 0093 1] Length : 0A -[05Eh 0094 1] Bus : 00 -[05Fh 0095 1] Source : 09 -[060h 0096 4] Interrupt : 00000009 -[064h 0100 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[066h 0102 1] Subtable Type : 02 [Interrupt Source Override] -[067h 0103 1] Length : 0A -[068h 0104 1] Bus : 00 -[069h 0105 1] Source : 0A -[06Ah 0106 4] Interrupt : 0000000A -[06Eh 0110 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[070h 0112 1] Subtable Type : 02 [Interrupt Source Override] -[071h 0113 1] Length : 0A -[072h 0114 1] Bus : 00 -[073h 0115 1] Source : 0B -[074h 0116 4] Interrupt : 0000000B -[078h 0120 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[07Ah 0122 1] Subtable Type : 04 [Local APIC NMI] -[07Bh 0123 1] Length : 06 -[07Ch 0124 1] Processor ID : FF -[07Dh 0125 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[07Fh 0127 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 128 (0x80) - - 0000: 41 50 49 43 80 00 00 00 01 DA 42 4F 43 48 53 20 // APIC......BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0C 00 00 // ................ - 0040: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ - 0050: 00 00 02 0A 00 05 05 00 00 00 0D 00 02 0A 00 09 // ................ - 0060: 09 00 00 00 0D 00 02 0A 00 0A 0A 00 00 00 0D 00 // ................ - 0070: 02 0A 00 0B 0B 00 00 00 0D 00 04 06 FF 00 00 01 // ................ diff --git a/tests/data/acpi/pc/APIC.bridge b/tests/data/acpi/pc/APIC.bridge deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/APIC.bridge.dsl b/tests/data/acpi/pc/APIC.bridge.dsl deleted file mode 100644 index 28283700637..00000000000 --- a/tests/data/acpi/pc/APIC.bridge.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.bridge, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/pc/APIC.cphp.dsl b/tests/data/acpi/pc/APIC.cphp.dsl deleted file mode 100644 index b4b043229aa..00000000000 --- a/tests/data/acpi/pc/APIC.cphp.dsl +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.cphp, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 000000A0 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : 7B -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 00 [Processor Local APIC] -[035h 0053 1] Length : 08 -[036h 0054 1] Processor ID : 01 -[037h 0055 1] Local Apic ID : 01 -[038h 0056 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[03Ch 0060 1] Subtable Type : 00 [Processor Local APIC] -[03Dh 0061 1] Length : 08 -[03Eh 0062 1] Processor ID : 02 -[03Fh 0063 1] Local Apic ID : 02 -[040h 0064 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[044h 0068 1] Subtable Type : 00 [Processor Local APIC] -[045h 0069 1] Length : 08 -[046h 0070 1] Processor ID : 03 -[047h 0071 1] Local Apic ID : 04 -[048h 0072 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[04Ch 0076 1] Subtable Type : 00 [Processor Local APIC] -[04Dh 0077 1] Length : 08 -[04Eh 0078 1] Processor ID : 04 -[04Fh 0079 1] Local Apic ID : 05 -[050h 0080 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[054h 0084 1] Subtable Type : 00 [Processor Local APIC] -[055h 0085 1] Length : 08 -[056h 0086 1] Processor ID : 05 -[057h 0087 1] Local Apic ID : 06 -[058h 0088 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[05Ch 0092 1] Subtable Type : 01 [I/O APIC] -[05Dh 0093 1] Length : 0C -[05Eh 0094 1] I/O Apic ID : 00 -[05Fh 0095 1] Reserved : 00 -[060h 0096 4] Address : FEC00000 -[064h 0100 4] Interrupt : 00000000 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 00 -[06Ch 0108 4] Interrupt : 00000002 -[070h 0112 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[072h 0114 1] Subtable Type : 02 [Interrupt Source Override] -[073h 0115 1] Length : 0A -[074h 0116 1] Bus : 00 -[075h 0117 1] Source : 05 -[076h 0118 4] Interrupt : 00000005 -[07Ah 0122 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[07Ch 0124 1] Subtable Type : 02 [Interrupt Source Override] -[07Dh 0125 1] Length : 0A -[07Eh 0126 1] Bus : 00 -[07Fh 0127 1] Source : 09 -[080h 0128 4] Interrupt : 00000009 -[084h 0132 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[086h 0134 1] Subtable Type : 02 [Interrupt Source Override] -[087h 0135 1] Length : 0A -[088h 0136 1] Bus : 00 -[089h 0137 1] Source : 0A -[08Ah 0138 4] Interrupt : 0000000A -[08Eh 0142 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[090h 0144 1] Subtable Type : 02 [Interrupt Source Override] -[091h 0145 1] Length : 0A -[092h 0146 1] Bus : 00 -[093h 0147 1] Source : 0B -[094h 0148 4] Interrupt : 0000000B -[098h 0152 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[09Ah 0154 1] Subtable Type : 04 [Local APIC NMI] -[09Bh 0155 1] Length : 06 -[09Ch 0156 1] Processor ID : FF -[09Dh 0157 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[09Fh 0159 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 160 (0xA0) - - 0000: 41 50 49 43 A0 00 00 00 01 7B 42 4F 43 48 53 20 // APIC.....{BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 00 08 01 01 01 00 00 00 00 08 02 02 // ................ - 0040: 00 00 00 00 00 08 03 04 00 00 00 00 00 08 04 05 // ................ - 0050: 00 00 00 00 00 08 05 06 00 00 00 00 01 0C 00 00 // ................ - 0060: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ - 0070: 00 00 02 0A 00 05 05 00 00 00 0D 00 02 0A 00 09 // ................ - 0080: 09 00 00 00 0D 00 02 0A 00 0A 0A 00 00 00 0D 00 // ................ - 0090: 02 0A 00 0B 0B 00 00 00 0D 00 04 06 FF 00 00 01 // ................ diff --git a/tests/data/acpi/pc/APIC.dimmpxm.dsl b/tests/data/acpi/pc/APIC.dimmpxm.dsl deleted file mode 100644 index adabdcc6037..00000000000 --- a/tests/data/acpi/pc/APIC.dimmpxm.dsl +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.dimmpxm, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000090 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : AE -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 00 [Processor Local APIC] -[035h 0053 1] Length : 08 -[036h 0054 1] Processor ID : 01 -[037h 0055 1] Local Apic ID : 01 -[038h 0056 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[03Ch 0060 1] Subtable Type : 00 [Processor Local APIC] -[03Dh 0061 1] Length : 08 -[03Eh 0062 1] Processor ID : 02 -[03Fh 0063 1] Local Apic ID : 02 -[040h 0064 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[044h 0068 1] Subtable Type : 00 [Processor Local APIC] -[045h 0069 1] Length : 08 -[046h 0070 1] Processor ID : 03 -[047h 0071 1] Local Apic ID : 03 -[048h 0072 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[04Ch 0076 1] Subtable Type : 01 [I/O APIC] -[04Dh 0077 1] Length : 0C -[04Eh 0078 1] I/O Apic ID : 00 -[04Fh 0079 1] Reserved : 00 -[050h 0080 4] Address : FEC00000 -[054h 0084 4] Interrupt : 00000000 - -[058h 0088 1] Subtable Type : 02 [Interrupt Source Override] -[059h 0089 1] Length : 0A -[05Ah 0090 1] Bus : 00 -[05Bh 0091 1] Source : 00 -[05Ch 0092 4] Interrupt : 00000002 -[060h 0096 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[062h 0098 1] Subtable Type : 02 [Interrupt Source Override] -[063h 0099 1] Length : 0A -[064h 0100 1] Bus : 00 -[065h 0101 1] Source : 05 -[066h 0102 4] Interrupt : 00000005 -[06Ah 0106 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[06Ch 0108 1] Subtable Type : 02 [Interrupt Source Override] -[06Dh 0109 1] Length : 0A -[06Eh 0110 1] Bus : 00 -[06Fh 0111 1] Source : 09 -[070h 0112 4] Interrupt : 00000009 -[074h 0116 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[076h 0118 1] Subtable Type : 02 [Interrupt Source Override] -[077h 0119 1] Length : 0A -[078h 0120 1] Bus : 00 -[079h 0121 1] Source : 0A -[07Ah 0122 4] Interrupt : 0000000A -[07Eh 0126 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[080h 0128 1] Subtable Type : 02 [Interrupt Source Override] -[081h 0129 1] Length : 0A -[082h 0130 1] Bus : 00 -[083h 0131 1] Source : 0B -[084h 0132 4] Interrupt : 0000000B -[088h 0136 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[08Ah 0138 1] Subtable Type : 04 [Local APIC NMI] -[08Bh 0139 1] Length : 06 -[08Ch 0140 1] Processor ID : FF -[08Dh 0141 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[08Fh 0143 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 144 (0x90) - - 0000: 41 50 49 43 90 00 00 00 01 AE 42 4F 43 48 53 20 // APIC......BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 00 08 01 01 01 00 00 00 00 08 02 02 // ................ - 0040: 01 00 00 00 00 08 03 03 01 00 00 00 01 0C 00 00 // ................ - 0050: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ - 0060: 00 00 02 0A 00 05 05 00 00 00 0D 00 02 0A 00 09 // ................ - 0070: 09 00 00 00 0D 00 02 0A 00 0A 0A 00 00 00 0D 00 // ................ - 0080: 02 0A 00 0B 0B 00 00 00 0D 00 04 06 FF 00 00 01 // ................ diff --git a/tests/data/acpi/pc/APIC.dsl b/tests/data/acpi/pc/APIC.dsl deleted file mode 100644 index d9516fc1f25..00000000000 --- a/tests/data/acpi/pc/APIC.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.roothp, Mon Sep 28 17:24:38 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/pc/APIC.hpbridge b/tests/data/acpi/pc/APIC.hpbridge deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/APIC.ipmikcs b/tests/data/acpi/pc/APIC.ipmikcs deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/APIC.ipmikcs.dsl b/tests/data/acpi/pc/APIC.ipmikcs.dsl deleted file mode 100644 index 28198bed681..00000000000 --- a/tests/data/acpi/pc/APIC.ipmikcs.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.ipmikcs, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/pc/APIC.memhp b/tests/data/acpi/pc/APIC.memhp deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/APIC.memhp.dsl b/tests/data/acpi/pc/APIC.memhp.dsl deleted file mode 100644 index b8449c0bde9..00000000000 --- a/tests/data/acpi/pc/APIC.memhp.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.memhp, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/pc/APIC.numamem b/tests/data/acpi/pc/APIC.numamem deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/APIC.numamem.dsl b/tests/data/acpi/pc/APIC.numamem.dsl deleted file mode 100644 index d75e4283d18..00000000000 --- a/tests/data/acpi/pc/APIC.numamem.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/pc/APIC.numamem, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/pc/APIC.roothp b/tests/data/acpi/pc/APIC.roothp deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/pc/DSDT.acpihmat.dsl b/tests/data/acpi/pc/DSDT.acpihmat.dsl deleted file mode 100644 index b2a4b1bd7f3..00000000000 --- a/tests/data/acpi/pc/DSDT.acpihmat.dsl +++ /dev/null @@ -1,1619 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.acpihmat, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001872 (6258) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x8E - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x02) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x00000001C0000000, // Range Minimum - 0x000000023FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.bridge.dsl b/tests/data/acpi/pc/DSDT.bridge.dsl deleted file mode 100644 index 3311b57ecb2..00000000000 --- a/tests/data/acpi/pc/DSDT.bridge.dsl +++ /dev/null @@ -1,1800 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.bridge, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001A89 (6793) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x09 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x000000017FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_ADR, 0x00030000) // _ADR: Address - Name (BSEL, One) - Device (S00) - { - Name (_SUN, Zero) // _SUN: Slot User Number - Name (_ADR, Zero) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S08) - { - Name (_SUN, One) // _SUN: Slot User Number - Name (_ADR, 0x00010000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S10) - { - Name (_SUN, 0x02) // _SUN: Slot User Number - Name (_ADR, 0x00020000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & One)) - { - Notify (S00, Arg1) - } - - If ((Arg0 & 0x02)) - { - Notify (S08, Arg1) - } - - If ((Arg0 & 0x04)) - { - Notify (S10, Arg1) - } - - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = One - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - ^S18.PCNT () - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.cphp.dsl b/tests/data/acpi/pc/DSDT.cphp.dsl deleted file mode 100644 index 22ed37d7dc4..00000000000 --- a/tests/data/acpi/pc/DSDT.cphp.dsl +++ /dev/null @@ -1,1466 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.cphp, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001515 (5397) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x39 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (C002, Arg1) - } - - If ((Arg0 == 0x03)) - { - Notify (C003, Arg1) - } - - If ((Arg0 == 0x04)) - { - Notify (C004, Arg1) - } - - If ((Arg0 == 0x05)) - { - Notify (C005, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C002, 0x02, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x02)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x02) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x02, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C003, 0x03, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x03)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x03) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x03, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C004, 0x04, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x04)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x04, 0x05, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x04) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x04, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C005, 0x05, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x05)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x05, 0x06, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x05) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x05, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x000000017FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.dimmpxm.dsl b/tests/data/acpi/pc/DSDT.dimmpxm.dsl deleted file mode 100644 index 798056147b9..00000000000 --- a/tests/data/acpi/pc/DSDT.dimmpxm.dsl +++ /dev/null @@ -1,1719 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.dimmpxm, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x000019BB (6587) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x21 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - External (_SB_.NVDR, UnknownObj) - - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (C002, Arg1) - } - - If ((Arg0 == 0x03)) - { - Notify (C003, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C002, 0x02, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x02)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x02) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x02, Arg0, Arg1, Arg2) - } - - Name (_PXM, 0x02) // _PXM: Device Proximity - } - - Processor (C003, 0x03, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x03)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x03) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x03, Arg0, Arg1, Arg2) - } - - Name (_PXM, 0x03) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x03) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP02) - { - Name (_UID, "0x02") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (MP02, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - - Method (_E04, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Notify (\_SB.NVDR, 0x80) // Status Change - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000200000000, // Range Minimum - 0x000000027FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.dsl b/tests/data/acpi/pc/DSDT.dsl deleted file mode 100644 index da2b413efce..00000000000 --- a/tests/data/acpi/pc/DSDT.dsl +++ /dev/null @@ -1,1407 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.roothp, Mon Sep 28 17:24:38 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001488 (5256) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0xF2 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Name (CNEW, Package (0xFF){}) - Local3 = Zero - Local4 = One - While ((Local4 == One)) - { - Local4 = Zero - Local0 = One - Local1 = Zero - While (((Local0 == One) && (Local3 < One))) - { - Local0 = Zero - \_SB.PCI0.PRES.CSEL = Local3 - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CDAT < Local3)) - { - Break - } - - If ((Local1 == 0xFF)) - { - Local4 = One - Break - } - - Local3 = \_SB.PCI0.PRES.CDAT - If ((\_SB.PCI0.PRES.CINS == One)) - { - CNEW [Local1] = Local3 - Local1++ - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (Local3, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - - Local3++ - } - - Local2 = Zero - While ((Local2 < Local1)) - { - Local3 = DerefOf (CNEW [Local2]) - CTFY (Local3, One) - Debug = Local3 - \_SB.PCI0.PRES.CSEL = Local3 - \_SB.PCI0.PRES.CINS = One - Local2++ - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x000000017FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_ADR, 0x00030000) // _ADR: Address - Name (BSEL, Zero) - Device (S00) - { - Name (_SUN, Zero) // _SUN: Slot User Number - Name (_ADR, Zero) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S08) - { - Name (_SUN, One) // _SUN: Slot User Number - Name (_ADR, 0x00010000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S10) - { - Name (_SUN, 0x02) // _SUN: Slot User Number - Name (_ADR, 0x00020000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & One)) - { - Notify (S00, Arg1) - } - - If ((Arg0 & 0x02)) - { - Notify (S08, Arg1) - } - - If ((Arg0 & 0x04)) - { - Notify (S10, Arg1) - } - - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - - Method (PCNT, 0, NotSerialized) - { - ^S18.PCNT () - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.ipmikcs.dsl b/tests/data/acpi/pc/DSDT.ipmikcs.dsl deleted file mode 100644 index 2e4b524ab85..00000000000 --- a/tests/data/acpi/pc/DSDT.ipmikcs.dsl +++ /dev/null @@ -1,1337 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.ipmikcs, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000138E (5006) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x54 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (MI1) - { - Name (_HID, EisaId ("IPI0001")) // _HID: Hardware ID - Name (_STR, "ipmi_kcs") // _STR: Description String - Name (_UID, One) // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CA2, // Range Minimum - 0x0CA3, // Range Maximum - 0x01, // Alignment - 0x02, // Length - ) - }) - Name (_IFT, One) // _IFT: IPMI Interface Type - Name (_SRV, 0x0200) // _SRV: IPMI Spec Revision - } - - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x000000017FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.memhp.dsl b/tests/data/acpi/pc/DSDT.memhp.dsl deleted file mode 100644 index 299315051e5..00000000000 --- a/tests/data/acpi/pc/DSDT.memhp.dsl +++ /dev/null @@ -1,1625 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.memhp, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001895 (6293) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0xB2 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x03) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP02) - { - Name (_UID, "0x02") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (MP02, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000200000000, // Range Minimum - 0x000000027FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/DSDT.numamem.dsl b/tests/data/acpi/pc/DSDT.numamem.dsl deleted file mode 100644 index 3d08447f1e7..00000000000 --- a/tests/data/acpi/pc/DSDT.numamem.dsl +++ /dev/null @@ -1,1321 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/pc/DSDT.numamem, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000134C (4940) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x6A - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x00010000) // _ADR: Address - OperationRegion (P40C, PCI_Config, 0x60, 0x04) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F2, // Range Minimum - 0x03F2, // Range Maximum - 0x00, // Alignment - 0x04, // Length - ) - IO (Decode16, - 0x03F7, // Range Minimum - 0x03F7, // Range Maximum - 0x00, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {6} - DMA (Compatibility, NotBusMaster, Transfer8, ) - {2} - }) - Device (FLPA) - { - Name (_ADR, Zero) // _ADR: Address - Name (_FDI, Package (0x10) // _FDI: Floppy Drive Information - { - Zero, - 0x05, - 0x4F, - 0x30, - One, - 0xAF, - 0x02, - 0x25, - 0x02, - 0x12, - 0x1B, - 0xFF, - 0x6C, - 0xF6, - 0x0F, - 0x08 - }) - } - - Name (_FDE, Buffer (0x14) // _FDE: Floppy Disk Enumerate - { - /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ - /* 0010 */ 0x02, 0x00, 0x00, 0x00 // .... - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Scope (_SB.PCI0) - { - OperationRegion (PCST, SystemIO, 0xAE00, 0x08) - Field (PCST, DWordAcc, NoLock, WriteAsZeros) - { - PCIU, 32, - PCID, 32 - } - - OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) - Field (SEJ, DWordAcc, NoLock, WriteAsZeros) - { - B0EJ, 32 - } - - OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) - Field (BNMR, DWordAcc, NoLock, WriteAsZeros) - { - BNUM, 32 - } - - Mutex (BLCK, 0x00) - Method (PCEJ, 2, NotSerialized) - { - Acquire (BLCK, 0xFFFF) - BNUM = Arg0 - B0EJ = (One << Arg1) - Release (BLCK) - Return (Zero) - } - } - - Scope (_SB) - { - Scope (PCI0) - { - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - Local0 = Package (0x80){} - Local1 = Zero - While ((Local1 < 0x80)) - { - Local2 = (Local1 >> 0x02) - Local3 = ((Local1 + Local2) & 0x03) - If ((Local3 == Zero)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKD, - Zero - } - } - - If ((Local3 == One)) - { - If ((Local1 == 0x04)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKS, - Zero - } - } - Else - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKA, - Zero - } - } - } - - If ((Local3 == 0x02)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKB, - Zero - } - } - - If ((Local3 == 0x03)) - { - Local4 = Package (0x04) - { - Zero, - Zero, - LNKC, - Zero - } - } - - Local4 [Zero] = ((Local2 << 0x10) | 0xFFFF) - Local4 [One] = (Local1 & 0x03) - Local0 [Local1] = Local4 - Local1++ - } - - Return (Local0) - } - } - - Field (PCI0.ISA.P40C, ByteAcc, NoLock, Preserve) - { - PRQ0, 8, - PRQ1, 8, - PRQ2, 8, - PRQ3, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - If ((Arg0 < 0x80)) - { - PRRI = Arg0 - } - - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ0)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ0 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ0)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ0 = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ1)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ1 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ1)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ1 = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ2)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ2 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ2)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ2 = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQ3)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQ3 |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQ3)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQ3 = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKS) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000009, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0B) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (_PRS) /* \_SB_.LNKS._PRS */ - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAF00, // Range Minimum - 0xAF00, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0xAF00, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Acquire (\_SB.PCI0.BLCK, 0xFFFF) - \_SB.PCI0.PCNT () - Release (\_SB.PCI0.BLCK) - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xF6C00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x000000017FFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000080000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAFE0, // Range Minimum - 0xAFE0, // Range Maximum - 0x01, // Alignment - 0x04, // Length - ) - }) - } - - Device (PHPR) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "PCI Hotplug resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0xAE00, // Range Minimum - 0xAE00, // Range Maximum - 0x01, // Alignment - 0x14, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Name (BSEL, Zero) - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S18) - { - Name (_SUN, 0x03) // _SUN: Slot User Number - Name (_ADR, 0x00030000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S20) - { - Name (_SUN, 0x04) // _SUN: Slot User Number - Name (_ADR, 0x00040000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S28) - { - Name (_SUN, 0x05) // _SUN: Slot User Number - Name (_ADR, 0x00050000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S30) - { - Name (_SUN, 0x06) // _SUN: Slot User Number - Name (_ADR, 0x00060000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S38) - { - Name (_SUN, 0x07) // _SUN: Slot User Number - Name (_ADR, 0x00070000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S40) - { - Name (_SUN, 0x08) // _SUN: Slot User Number - Name (_ADR, 0x00080000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S48) - { - Name (_SUN, 0x09) // _SUN: Slot User Number - Name (_ADR, 0x00090000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S50) - { - Name (_SUN, 0x0A) // _SUN: Slot User Number - Name (_ADR, 0x000A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S58) - { - Name (_SUN, 0x0B) // _SUN: Slot User Number - Name (_ADR, 0x000B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S60) - { - Name (_SUN, 0x0C) // _SUN: Slot User Number - Name (_ADR, 0x000C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S68) - { - Name (_SUN, 0x0D) // _SUN: Slot User Number - Name (_ADR, 0x000D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S70) - { - Name (_SUN, 0x0E) // _SUN: Slot User Number - Name (_ADR, 0x000E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S78) - { - Name (_SUN, 0x0F) // _SUN: Slot User Number - Name (_ADR, 0x000F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S80) - { - Name (_SUN, 0x10) // _SUN: Slot User Number - Name (_ADR, 0x00100000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S88) - { - Name (_SUN, 0x11) // _SUN: Slot User Number - Name (_ADR, 0x00110000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S90) - { - Name (_SUN, 0x12) // _SUN: Slot User Number - Name (_ADR, 0x00120000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (S98) - { - Name (_SUN, 0x13) // _SUN: Slot User Number - Name (_ADR, 0x00130000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA0) - { - Name (_SUN, 0x14) // _SUN: Slot User Number - Name (_ADR, 0x00140000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SA8) - { - Name (_SUN, 0x15) // _SUN: Slot User Number - Name (_ADR, 0x00150000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB0) - { - Name (_SUN, 0x16) // _SUN: Slot User Number - Name (_ADR, 0x00160000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SB8) - { - Name (_SUN, 0x17) // _SUN: Slot User Number - Name (_ADR, 0x00170000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC0) - { - Name (_SUN, 0x18) // _SUN: Slot User Number - Name (_ADR, 0x00180000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SC8) - { - Name (_SUN, 0x19) // _SUN: Slot User Number - Name (_ADR, 0x00190000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD0) - { - Name (_SUN, 0x1A) // _SUN: Slot User Number - Name (_ADR, 0x001A0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SD8) - { - Name (_SUN, 0x1B) // _SUN: Slot User Number - Name (_ADR, 0x001B0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE0) - { - Name (_SUN, 0x1C) // _SUN: Slot User Number - Name (_ADR, 0x001C0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SE8) - { - Name (_SUN, 0x1D) // _SUN: Slot User Number - Name (_ADR, 0x001D0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF0) - { - Name (_SUN, 0x1E) // _SUN: Slot User Number - Name (_ADR, 0x001E0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Device (SF8) - { - Name (_SUN, 0x1F) // _SUN: Slot User Number - Name (_ADR, 0x001F0000) // _ADR: Address - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - PCEJ (BSEL, _SUN) - } - } - - Method (DVNT, 2, NotSerialized) - { - If ((Arg0 & 0x08)) - { - Notify (S18, Arg1) - } - - If ((Arg0 & 0x10)) - { - Notify (S20, Arg1) - } - - If ((Arg0 & 0x20)) - { - Notify (S28, Arg1) - } - - If ((Arg0 & 0x40)) - { - Notify (S30, Arg1) - } - - If ((Arg0 & 0x80)) - { - Notify (S38, Arg1) - } - - If ((Arg0 & 0x0100)) - { - Notify (S40, Arg1) - } - - If ((Arg0 & 0x0200)) - { - Notify (S48, Arg1) - } - - If ((Arg0 & 0x0400)) - { - Notify (S50, Arg1) - } - - If ((Arg0 & 0x0800)) - { - Notify (S58, Arg1) - } - - If ((Arg0 & 0x1000)) - { - Notify (S60, Arg1) - } - - If ((Arg0 & 0x2000)) - { - Notify (S68, Arg1) - } - - If ((Arg0 & 0x4000)) - { - Notify (S70, Arg1) - } - - If ((Arg0 & 0x8000)) - { - Notify (S78, Arg1) - } - - If ((Arg0 & 0x00010000)) - { - Notify (S80, Arg1) - } - - If ((Arg0 & 0x00020000)) - { - Notify (S88, Arg1) - } - - If ((Arg0 & 0x00040000)) - { - Notify (S90, Arg1) - } - - If ((Arg0 & 0x00080000)) - { - Notify (S98, Arg1) - } - - If ((Arg0 & 0x00100000)) - { - Notify (SA0, Arg1) - } - - If ((Arg0 & 0x00200000)) - { - Notify (SA8, Arg1) - } - - If ((Arg0 & 0x00400000)) - { - Notify (SB0, Arg1) - } - - If ((Arg0 & 0x00800000)) - { - Notify (SB8, Arg1) - } - - If ((Arg0 & 0x01000000)) - { - Notify (SC0, Arg1) - } - - If ((Arg0 & 0x02000000)) - { - Notify (SC8, Arg1) - } - - If ((Arg0 & 0x04000000)) - { - Notify (SD0, Arg1) - } - - If ((Arg0 & 0x08000000)) - { - Notify (SD8, Arg1) - } - - If ((Arg0 & 0x10000000)) - { - Notify (SE0, Arg1) - } - - If ((Arg0 & 0x20000000)) - { - Notify (SE8, Arg1) - } - - If ((Arg0 & 0x40000000)) - { - Notify (SF0, Arg1) - } - - If ((Arg0 & 0x80000000)) - { - Notify (SF8, Arg1) - } - } - - Method (PCNT, 0, NotSerialized) - { - BNUM = Zero - DVNT (PCIU, One) - DVNT (PCID, 0x03) - } - } - } -} - diff --git a/tests/data/acpi/pc/FACP.acpihmat b/tests/data/acpi/pc/FACP.acpihmat deleted file mode 100644 index 261ebdc5d1c3bdf18fb7935314a04fd7f6f92a7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 116 zc-nJwbPgzCU|?We=;ZJ05v<@85#a0w6k`O6f!H7#1{fJQ88!jwj~{>p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67p8$^tS4I$3~ cWItFB6=z~#VFA+r`Tz67*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.bridge.dsl b/tests/data/acpi/q35/APIC.bridge.dsl deleted file mode 100644 index 24890674016..00000000000 --- a/tests/data/acpi/q35/APIC.bridge.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.bridge, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.cphp.dsl b/tests/data/acpi/q35/APIC.cphp.dsl deleted file mode 100644 index be8daf5f803..00000000000 --- a/tests/data/acpi/q35/APIC.cphp.dsl +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.cphp, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 000000A0 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : 7B -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 00 [Processor Local APIC] -[035h 0053 1] Length : 08 -[036h 0054 1] Processor ID : 01 -[037h 0055 1] Local Apic ID : 01 -[038h 0056 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[03Ch 0060 1] Subtable Type : 00 [Processor Local APIC] -[03Dh 0061 1] Length : 08 -[03Eh 0062 1] Processor ID : 02 -[03Fh 0063 1] Local Apic ID : 02 -[040h 0064 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[044h 0068 1] Subtable Type : 00 [Processor Local APIC] -[045h 0069 1] Length : 08 -[046h 0070 1] Processor ID : 03 -[047h 0071 1] Local Apic ID : 04 -[048h 0072 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[04Ch 0076 1] Subtable Type : 00 [Processor Local APIC] -[04Dh 0077 1] Length : 08 -[04Eh 0078 1] Processor ID : 04 -[04Fh 0079 1] Local Apic ID : 05 -[050h 0080 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[054h 0084 1] Subtable Type : 00 [Processor Local APIC] -[055h 0085 1] Length : 08 -[056h 0086 1] Processor ID : 05 -[057h 0087 1] Local Apic ID : 06 -[058h 0088 4] Flags (decoded below) : 00000000 - Processor Enabled : 0 - Runtime Online Capable : 0 - -[05Ch 0092 1] Subtable Type : 01 [I/O APIC] -[05Dh 0093 1] Length : 0C -[05Eh 0094 1] I/O Apic ID : 00 -[05Fh 0095 1] Reserved : 00 -[060h 0096 4] Address : FEC00000 -[064h 0100 4] Interrupt : 00000000 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 00 -[06Ch 0108 4] Interrupt : 00000002 -[070h 0112 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[072h 0114 1] Subtable Type : 02 [Interrupt Source Override] -[073h 0115 1] Length : 0A -[074h 0116 1] Bus : 00 -[075h 0117 1] Source : 05 -[076h 0118 4] Interrupt : 00000005 -[07Ah 0122 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[07Ch 0124 1] Subtable Type : 02 [Interrupt Source Override] -[07Dh 0125 1] Length : 0A -[07Eh 0126 1] Bus : 00 -[07Fh 0127 1] Source : 09 -[080h 0128 4] Interrupt : 00000009 -[084h 0132 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[086h 0134 1] Subtable Type : 02 [Interrupt Source Override] -[087h 0135 1] Length : 0A -[088h 0136 1] Bus : 00 -[089h 0137 1] Source : 0A -[08Ah 0138 4] Interrupt : 0000000A -[08Eh 0142 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[090h 0144 1] Subtable Type : 02 [Interrupt Source Override] -[091h 0145 1] Length : 0A -[092h 0146 1] Bus : 00 -[093h 0147 1] Source : 0B -[094h 0148 4] Interrupt : 0000000B -[098h 0152 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[09Ah 0154 1] Subtable Type : 04 [Local APIC NMI] -[09Bh 0155 1] Length : 06 -[09Ch 0156 1] Processor ID : FF -[09Dh 0157 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[09Fh 0159 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 160 (0xA0) - - 0000: 41 50 49 43 A0 00 00 00 01 7B 42 4F 43 48 53 20 // APIC.....{BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 00 08 01 01 01 00 00 00 00 08 02 02 // ................ - 0040: 00 00 00 00 00 08 03 04 00 00 00 00 00 08 04 05 // ................ - 0050: 00 00 00 00 00 08 05 06 00 00 00 00 01 0C 00 00 // ................ - 0060: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ - 0070: 00 00 02 0A 00 05 05 00 00 00 0D 00 02 0A 00 09 // ................ - 0080: 09 00 00 00 0D 00 02 0A 00 0A 0A 00 00 00 0D 00 // ................ - 0090: 02 0A 00 0B 0B 00 00 00 0D 00 04 06 FF 00 00 01 // ................ diff --git a/tests/data/acpi/q35/APIC.dimmpxm.dsl b/tests/data/acpi/q35/APIC.dimmpxm.dsl deleted file mode 100644 index 798ab91bed8..00000000000 --- a/tests/data/acpi/q35/APIC.dimmpxm.dsl +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.dimmpxm, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000090 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : AE -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 00 [Processor Local APIC] -[035h 0053 1] Length : 08 -[036h 0054 1] Processor ID : 01 -[037h 0055 1] Local Apic ID : 01 -[038h 0056 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[03Ch 0060 1] Subtable Type : 00 [Processor Local APIC] -[03Dh 0061 1] Length : 08 -[03Eh 0062 1] Processor ID : 02 -[03Fh 0063 1] Local Apic ID : 02 -[040h 0064 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[044h 0068 1] Subtable Type : 00 [Processor Local APIC] -[045h 0069 1] Length : 08 -[046h 0070 1] Processor ID : 03 -[047h 0071 1] Local Apic ID : 03 -[048h 0072 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[04Ch 0076 1] Subtable Type : 01 [I/O APIC] -[04Dh 0077 1] Length : 0C -[04Eh 0078 1] I/O Apic ID : 00 -[04Fh 0079 1] Reserved : 00 -[050h 0080 4] Address : FEC00000 -[054h 0084 4] Interrupt : 00000000 - -[058h 0088 1] Subtable Type : 02 [Interrupt Source Override] -[059h 0089 1] Length : 0A -[05Ah 0090 1] Bus : 00 -[05Bh 0091 1] Source : 00 -[05Ch 0092 4] Interrupt : 00000002 -[060h 0096 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[062h 0098 1] Subtable Type : 02 [Interrupt Source Override] -[063h 0099 1] Length : 0A -[064h 0100 1] Bus : 00 -[065h 0101 1] Source : 05 -[066h 0102 4] Interrupt : 00000005 -[06Ah 0106 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[06Ch 0108 1] Subtable Type : 02 [Interrupt Source Override] -[06Dh 0109 1] Length : 0A -[06Eh 0110 1] Bus : 00 -[06Fh 0111 1] Source : 09 -[070h 0112 4] Interrupt : 00000009 -[074h 0116 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[076h 0118 1] Subtable Type : 02 [Interrupt Source Override] -[077h 0119 1] Length : 0A -[078h 0120 1] Bus : 00 -[079h 0121 1] Source : 0A -[07Ah 0122 4] Interrupt : 0000000A -[07Eh 0126 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[080h 0128 1] Subtable Type : 02 [Interrupt Source Override] -[081h 0129 1] Length : 0A -[082h 0130 1] Bus : 00 -[083h 0131 1] Source : 0B -[084h 0132 4] Interrupt : 0000000B -[088h 0136 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[08Ah 0138 1] Subtable Type : 04 [Local APIC NMI] -[08Bh 0139 1] Length : 06 -[08Ch 0140 1] Processor ID : FF -[08Dh 0141 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[08Fh 0143 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 144 (0x90) - - 0000: 41 50 49 43 90 00 00 00 01 AE 42 4F 43 48 53 20 // APIC......BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 00 08 01 01 01 00 00 00 00 08 02 02 // ................ - 0040: 01 00 00 00 00 08 03 03 01 00 00 00 01 0C 00 00 // ................ - 0050: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ - 0060: 00 00 02 0A 00 05 05 00 00 00 0D 00 02 0A 00 09 // ................ - 0070: 09 00 00 00 0D 00 02 0A 00 0A 0A 00 00 00 0D 00 // ................ - 0080: 02 0A 00 0B 0B 00 00 00 0D 00 04 06 FF 00 00 01 // ................ diff --git a/tests/data/acpi/q35/APIC.dsl b/tests/data/acpi/q35/APIC.dsl deleted file mode 100644 index 77d2d2c0a53..00000000000 --- a/tests/data/acpi/q35/APIC.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.tis, Mon Sep 28 17:24:38 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.ipmibt b/tests/data/acpi/q35/APIC.ipmibt deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.ipmibt.dsl b/tests/data/acpi/q35/APIC.ipmibt.dsl deleted file mode 100644 index 127e21e2feb..00000000000 --- a/tests/data/acpi/q35/APIC.ipmibt.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.ipmibt, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.memhp b/tests/data/acpi/q35/APIC.memhp deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.memhp.dsl b/tests/data/acpi/q35/APIC.memhp.dsl deleted file mode 100644 index 1c0cb1dad1e..00000000000 --- a/tests/data/acpi/q35/APIC.memhp.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.memhp, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.mmio64 b/tests/data/acpi/q35/APIC.mmio64 deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.mmio64.dsl b/tests/data/acpi/q35/APIC.mmio64.dsl deleted file mode 100644 index 9a3df907666..00000000000 --- a/tests/data/acpi/q35/APIC.mmio64.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.mmio64, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.numamem b/tests/data/acpi/q35/APIC.numamem deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.numamem.dsl b/tests/data/acpi/q35/APIC.numamem.dsl deleted file mode 100644 index f4c5480fd63..00000000000 --- a/tests/data/acpi/q35/APIC.numamem.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.numamem, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/APIC.tis b/tests/data/acpi/q35/APIC.tis deleted file mode 100644 index 84509e0ae4cabeb5ead3e42a4edfa50abddbc17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 120 zc-nIe@N}+VU|?W;>*Vk35v<@85#a0y6k`O6f!H9Lf#JbFFwFr}2U5!e;vDz~BAK{= fm;uUSWd+i_AQmSljK#$TV{vnXSuAY-fkprTJtz$U diff --git a/tests/data/acpi/q35/APIC.tis.dsl b/tests/data/acpi/q35/APIC.tis.dsl deleted file mode 100644 index ca2373818eb..00000000000 --- a/tests/data/acpi/q35/APIC.tis.dsl +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembly of tests/data/acpi/q35/APIC.tis, Tue Aug 4 11:14:15 2020 - * - * ACPI Data Table [APIC] - * - * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue - */ - -[000h 0000 4] Signature : "APIC" [Multiple APIC Description Table (MADT)] -[004h 0004 4] Table Length : 00000078 -[008h 0008 1] Revision : 01 -[009h 0009 1] Checksum : ED -[00Ah 0010 6] Oem ID : "BOCHS " -[010h 0016 8] Oem Table ID : "BXPCAPIC" -[018h 0024 4] Oem Revision : 00000001 -[01Ch 0028 4] Asl Compiler ID : "BXPC" -[020h 0032 4] Asl Compiler Revision : 00000001 - -[024h 0036 4] Local Apic Address : FEE00000 -[028h 0040 4] Flags (decoded below) : 00000001 - PC-AT Compatibility : 1 - -[02Ch 0044 1] Subtable Type : 00 [Processor Local APIC] -[02Dh 0045 1] Length : 08 -[02Eh 0046 1] Processor ID : 00 -[02Fh 0047 1] Local Apic ID : 00 -[030h 0048 4] Flags (decoded below) : 00000001 - Processor Enabled : 1 - Runtime Online Capable : 0 - -[034h 0052 1] Subtable Type : 01 [I/O APIC] -[035h 0053 1] Length : 0C -[036h 0054 1] I/O Apic ID : 00 -[037h 0055 1] Reserved : 00 -[038h 0056 4] Address : FEC00000 -[03Ch 0060 4] Interrupt : 00000000 - -[040h 0064 1] Subtable Type : 02 [Interrupt Source Override] -[041h 0065 1] Length : 0A -[042h 0066 1] Bus : 00 -[043h 0067 1] Source : 00 -[044h 0068 4] Interrupt : 00000002 -[048h 0072 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 - -[04Ah 0074 1] Subtable Type : 02 [Interrupt Source Override] -[04Bh 0075 1] Length : 0A -[04Ch 0076 1] Bus : 00 -[04Dh 0077 1] Source : 05 -[04Eh 0078 4] Interrupt : 00000005 -[052h 0082 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[054h 0084 1] Subtable Type : 02 [Interrupt Source Override] -[055h 0085 1] Length : 0A -[056h 0086 1] Bus : 00 -[057h 0087 1] Source : 09 -[058h 0088 4] Interrupt : 00000009 -[05Ch 0092 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[05Eh 0094 1] Subtable Type : 02 [Interrupt Source Override] -[05Fh 0095 1] Length : 0A -[060h 0096 1] Bus : 00 -[061h 0097 1] Source : 0A -[062h 0098 4] Interrupt : 0000000A -[066h 0102 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[068h 0104 1] Subtable Type : 02 [Interrupt Source Override] -[069h 0105 1] Length : 0A -[06Ah 0106 1] Bus : 00 -[06Bh 0107 1] Source : 0B -[06Ch 0108 4] Interrupt : 0000000B -[070h 0112 2] Flags (decoded below) : 000D - Polarity : 1 - Trigger Mode : 3 - -[072h 0114 1] Subtable Type : 04 [Local APIC NMI] -[073h 0115 1] Length : 06 -[074h 0116 1] Processor ID : FF -[075h 0117 2] Flags (decoded below) : 0000 - Polarity : 0 - Trigger Mode : 0 -[077h 0119 1] Interrupt Input LINT : 01 - -Raw Table Data: Length 120 (0x78) - - 0000: 41 50 49 43 78 00 00 00 01 ED 42 4F 43 48 53 20 // APICx.....BOCHS - 0010: 42 58 50 43 41 50 49 43 01 00 00 00 42 58 50 43 // BXPCAPIC....BXPC - 0020: 01 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ - 0030: 01 00 00 00 01 0C 00 00 00 00 C0 FE 00 00 00 00 // ................ - 0040: 02 0A 00 00 02 00 00 00 00 00 02 0A 00 05 05 00 // ................ - 0050: 00 00 0D 00 02 0A 00 09 09 00 00 00 0D 00 02 0A // ................ - 0060: 00 0A 0A 00 00 00 0D 00 02 0A 00 0B 0B 00 00 00 // ................ - 0070: 0D 00 04 06 FF 00 00 01 // ........ diff --git a/tests/data/acpi/q35/DSDT.acpihmat.dsl b/tests/data/acpi/q35/DSDT.acpihmat.dsl deleted file mode 100644 index a9e0d4144ee..00000000000 --- a/tests/data/acpi/q35/DSDT.acpihmat.dsl +++ /dev/null @@ -1,3436 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.acpihmat, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000232A (9002) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x79 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x02) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x00000001C0000000, // Range Minimum - 0x00000009BFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.bridge.dsl b/tests/data/acpi/q35/DSDT.bridge.dsl deleted file mode 100644 index 51fbeb729dd..00000000000 --- a/tests/data/acpi/q35/DSDT.bridge.dsl +++ /dev/null @@ -1,3141 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.bridge, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001E0F (7695) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x4B - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.cphp.dsl b/tests/data/acpi/q35/DSDT.cphp.dsl deleted file mode 100644 index d3677e802cc..00000000000 --- a/tests/data/acpi/q35/DSDT.cphp.dsl +++ /dev/null @@ -1,3283 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.cphp, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001FCD (8141) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x25 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (C002, Arg1) - } - - If ((Arg0 == 0x03)) - { - Notify (C003, Arg1) - } - - If ((Arg0 == 0x04)) - { - Notify (C004, Arg1) - } - - If ((Arg0 == 0x05)) - { - Notify (C005, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C002, 0x02, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x02)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x02) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x02, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C003, 0x03, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x03)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x03) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x03, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C004, 0x04, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x04)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x04, 0x05, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x04) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x04, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C005, 0x05, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x05)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x05, 0x06, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x05) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x05, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.dimmpxm.dsl b/tests/data/acpi/q35/DSDT.dimmpxm.dsl deleted file mode 100644 index 9cab76729e3..00000000000 --- a/tests/data/acpi/q35/DSDT.dimmpxm.dsl +++ /dev/null @@ -1,3535 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.dimmpxm, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00002473 (9331) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0xEE - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - External (_SB_.NVDR, UnknownObj) - - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - - If ((Arg0 == One)) - { - Notify (C001, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (C002, Arg1) - } - - If ((Arg0 == 0x03)) - { - Notify (C003, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - - Processor (C001, 0x01, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (One)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (One) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (One, Arg0, Arg1, Arg2) - } - - Name (_PXM, One) // _PXM: Device Proximity - } - - Processor (C002, 0x02, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x02)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x02) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x02, Arg0, Arg1, Arg2) - } - - Name (_PXM, 0x02) // _PXM: Device Proximity - } - - Processor (C003, 0x03, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (0x03)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - CEJ0 (0x03) - } - - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (0x03, Arg0, Arg1, Arg2) - } - - Name (_PXM, 0x03) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x03) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP02) - { - Name (_UID, "0x02") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (MP02, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - Method (_E04, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - Notify (\_SB.NVDR, 0x80) // Status Change - } - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000200000000, // Range Minimum - 0x00000009FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.dsl b/tests/data/acpi/q35/DSDT.dsl deleted file mode 100644 index 5adfe001c7f..00000000000 --- a/tests/data/acpi/q35/DSDT.dsl +++ /dev/null @@ -1,3351 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.tis, Mon Sep 28 17:24:38 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x000020D2 (8402) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0xF4 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Name (CNEW, Package (0xFF){}) - Local3 = Zero - Local4 = One - While ((Local4 == One)) - { - Local4 = Zero - Local0 = One - Local1 = Zero - While (((Local0 == One) && (Local3 < One))) - { - Local0 = Zero - \_SB.PCI0.PRES.CSEL = Local3 - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CDAT < Local3)) - { - Break - } - - If ((Local1 == 0xFF)) - { - Local4 = One - Break - } - - Local3 = \_SB.PCI0.PRES.CDAT - If ((\_SB.PCI0.PRES.CINS == One)) - { - CNEW [Local1] = Local3 - Local1++ - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (Local3, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - - Local3++ - } - - Local2 = Zero - While ((Local2 < Local1)) - { - Local3 = DerefOf (CNEW [Local2]) - CTFY (Local3, One) - Debug = Local3 - \_SB.PCI0.PRES.CSEL = Local3 - \_SB.PCI0.PRES.CINS = One - Local2++ - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - Memory32Fixed (ReadWrite, - 0xFED40000, // Address Base - 0x00005000, // Address Length - ) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (TPM) - { - Name (_HID, "MSFT0101" /* TPM 2.0 Security Device */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadWrite, - 0xFED40000, // Address Base - 0x00005000, // Address Length - ) - }) - OperationRegion (TPP2, SystemMemory, 0xFED45100, 0x5A) - Field (TPP2, AnyAcc, NoLock, Preserve) - { - PPIN, 8, - PPIP, 32, - PPRP, 32, - PPRQ, 32, - PPRM, 32, - LPPR, 32 - } - - OperationRegion (TPP3, SystemMemory, 0xFED4515A, One) - Field (TPP3, ByteAcc, NoLock, Preserve) - { - MOVV, 8 - } - - Method (TPFN, 1, Serialized) - { - If ((Arg0 >= 0x0100)) - { - Return (Zero) - } - - OperationRegion (TPP1, SystemMemory, (0xFED45000 + Arg0), One) - Field (TPP1, ByteAcc, NoLock, Preserve) - { - TPPF, 8 - } - - Return (TPPF) /* \_SB_.PCI0.TPM_.TPFN.TPPF */ - } - - Name (TPM2, Package (0x02) - { - Zero, - Zero - }) - Name (TPM3, Package (0x03) - { - Zero, - Zero, - Zero - }) - Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method - { - If ((Arg0 == ToUUID ("3dddfaa6-361b-4eb4-a424-8d10089d1653") /* Physical Presence Interface */)) - { - If ((Arg2 == Zero)) - { - Return (Buffer (0x02) - { - 0xFF, 0x01 // .. - }) - } - - If ((Arg2 == One)) - { - Return ("1.3") - } - - If ((Arg2 == 0x02)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - If (((Local1 & 0x07) == Zero)) - { - Return (One) - } - - PPRQ = Local0 - PPRM = Zero - Return (Zero) - } - - If ((Arg2 == 0x03)) - { - If ((Arg1 == One)) - { - TPM2 [One] = PPRQ /* \_SB_.PCI0.TPM_.PPRQ */ - Return (TPM2) /* \_SB_.PCI0.TPM_.TPM2 */ - } - - If ((Arg1 == 0x02)) - { - TPM3 [One] = PPRQ /* \_SB_.PCI0.TPM_.PPRQ */ - TPM3 [0x02] = PPRM /* \_SB_.PCI0.TPM_.PPRM */ - Return (TPM3) /* \_SB_.PCI0.TPM_.TPM3 */ - } - } - - If ((Arg2 == 0x04)) - { - Return (0x02) - } - - If ((Arg2 == 0x05)) - { - TPM3 [One] = LPPR /* \_SB_.PCI0.TPM_.LPPR */ - TPM3 [0x02] = PPRP /* \_SB_.PCI0.TPM_.PPRP */ - Return (TPM3) /* \_SB_.PCI0.TPM_.TPM3 */ - } - - If ((Arg2 == 0x06)) - { - Return (0x03) - } - - If ((Arg2 == 0x07)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - If (((Local1 & 0x07) == Zero)) - { - Return (One) - } - - If (((Local1 & 0x07) == 0x02)) - { - Return (0x03) - } - - If ((Arg1 == One)) - { - PPRQ = Local0 - PPRM = Zero - } - - If ((Arg1 == 0x02)) - { - PPRQ = Local0 - PPRM = DerefOf (Arg3 [One]) - } - - Return (Zero) - } - - If ((Arg2 == 0x08)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - Return ((Local1 & 0x07)) - } - - Return (Buffer (One) - { - 0x00 // . - }) - } - - If ((Arg0 == ToUUID ("376054ed-cc13-4675-901c-4756d7f2d45d"))) - { - If ((Arg2 == Zero)) - { - Return (Buffer (One) - { - 0x03 // . - }) - } - - If ((Arg2 == One)) - { - Local0 = DerefOf (Arg3 [Zero]) - MOVV = Local0 - Return (Zero) - } - } - } - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.ipmibt.dsl b/tests/data/acpi/q35/DSDT.ipmibt.dsl deleted file mode 100644 index 63c1140a614..00000000000 --- a/tests/data/acpi/q35/DSDT.ipmibt.dsl +++ /dev/null @@ -1,3156 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.ipmibt, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001E49 (7753) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0xDF - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (MI1) - { - Name (_HID, EisaId ("IPI0001")) // _HID: Hardware ID - Name (_STR, "ipmi_bt") // _STR: Description String - Name (_UID, One) // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x00E4, // Range Minimum - 0x00E6, // Range Maximum - 0x01, // Alignment - 0x03, // Length - ) - IRQNoFlags () - {5} - }) - Name (_IFT, 0x03) // _IFT: IPMI Interface Type - Name (_SRV, 0x0200) // _SRV: IPMI Spec Revision - } - - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.memhp.dsl b/tests/data/acpi/q35/DSDT.memhp.dsl deleted file mode 100644 index 18cea090e63..00000000000 --- a/tests/data/acpi/q35/DSDT.memhp.dsl +++ /dev/null @@ -1,3442 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.memhp, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000234D (9037) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x9D - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, 0x03) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP01) - { - Name (_UID, "0x01") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Device (MP02) - { - Name (_UID, "0x02") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - - If ((Arg0 == One)) - { - Notify (MP01, Arg1) - } - - If ((Arg0 == 0x02)) - { - Notify (MP02, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000200000000, // Range Minimum - 0x00000009FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.mmio64.dsl b/tests/data/acpi/q35/DSDT.mmio64.dsl deleted file mode 100644 index a724c886e87..00000000000 --- a/tests/data/acpi/q35/DSDT.mmio64.dsl +++ /dev/null @@ -1,3377 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.mmio64, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00002268 (8808) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x59 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Device (\_SB.PCI0.MHPD) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "Memory hotplug resources") // _UID: Unique ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0A00, // Range Minimum - 0x0A00, // Range Maximum - 0x00, // Alignment - 0x18, // Length - ) - }) - OperationRegion (HPMR, SystemIO, 0x0A00, 0x18) - } - - Device (\_SB.MHPC) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "DIMM devices") // _UID: Unique ID - Name (MDNR, One) - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MRBL, 32, - MRBH, 32, - MRLL, 32, - MRLH, 32, - MPX, 32 - } - - Field (\_SB.PCI0.MHPD.HPMR, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x14), - MES, 1, - MINS, 1, - MRMV, 1, - MEJ, 1 - } - - Field (\_SB.PCI0.MHPD.HPMR, DWordAcc, NoLock, Preserve) - { - MSEL, 32, - MOEV, 32, - MOSC, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Return (0x0B) - } - - Mutex (MLCK, 0x00) - Method (MSCN, 0, NotSerialized) - { - If ((MDNR == Zero)) - { - Return (Zero) - } - - Local0 = Zero - Acquire (MLCK, 0xFFFF) - While ((Local0 < MDNR)) - { - MSEL = Local0 - If ((MINS == One)) - { - MTFY (Local0, One) - MINS = One - } - ElseIf ((MRMV == One)) - { - MTFY (Local0, 0x03) - MRMV = One - } - - Local0 += One - } - - Release (MLCK) - Return (One) - } - - Method (MRST, 1, NotSerialized) - { - Local0 = Zero - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - If ((MES == One)) - { - Local0 = 0x0F - } - - Release (MLCK) - Return (Local0) - } - - Method (MCRS, 1, Serialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Name (MR64, ResourceTemplate () - { - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0xFFFFFFFFFFFFFFFE, // Range Maximum - 0x0000000000000000, // Translation Offset - 0xFFFFFFFFFFFFFFFF, // Length - ,, _Y01, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MIN, MINL) // _MIN: Minimum Base Address - CreateDWordField (MR64, 0x12, MINH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._LEN, LENL) // _LEN: Length - CreateDWordField (MR64, 0x2A, LENH) - CreateDWordField (MR64, \_SB.MHPC.MCRS._Y01._MAX, MAXL) // _MAX: Maximum Base Address - CreateDWordField (MR64, 0x1A, MAXH) - MINH = MRBH /* \_SB_.MHPC.MRBH */ - MINL = MRBL /* \_SB_.MHPC.MRBL */ - LENH = MRLH /* \_SB_.MHPC.MRLH */ - LENL = MRLL /* \_SB_.MHPC.MRLL */ - MAXL = (MINL + LENL) /* \_SB_.MHPC.MCRS.LENL */ - MAXH = (MINH + LENH) /* \_SB_.MHPC.MCRS.LENH */ - If ((MAXL < MINL)) - { - MAXH += One - } - - If ((MAXL < One)) - { - MAXH -= One - } - - MAXL -= One - If ((MAXH == Zero)) - { - Name (MR32, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0xFFFFFFFE, // Range Maximum - 0x00000000, // Translation Offset - 0xFFFFFFFF, // Length - ,, _Y02, AddressRangeMemory, TypeStatic) - }) - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MIN, MIN) // _MIN: Minimum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._MAX, MAX) // _MAX: Maximum Base Address - CreateDWordField (MR32, \_SB.MHPC.MCRS._Y02._LEN, LEN) // _LEN: Length - MIN = MINL /* \_SB_.MHPC.MCRS.MINL */ - MAX = MAXL /* \_SB_.MHPC.MCRS.MAXL */ - LEN = LENL /* \_SB_.MHPC.MCRS.LENL */ - Release (MLCK) - Return (MR32) /* \_SB_.MHPC.MCRS.MR32 */ - } - - Release (MLCK) - Return (MR64) /* \_SB_.MHPC.MCRS.MR64 */ - } - - Method (MPXM, 1, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - Local0 = MPX /* \_SB_.MHPC.MPX_ */ - Release (MLCK) - Return (Local0) - } - - Method (MOST, 4, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MOEV = Arg1 - MOSC = Arg2 - Release (MLCK) - } - - Method (MEJ0, 2, NotSerialized) - { - Acquire (MLCK, 0xFFFF) - MSEL = ToInteger (Arg0) - MEJ = One - Release (MLCK) - } - - Device (MP00) - { - Name (_UID, "0x00") // _UID: Unique ID - Name (_HID, EisaId ("PNP0C80") /* Memory Device */) // _HID: Hardware ID - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (MCRS (_UID)) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (MRST (_UID)) - } - - Method (_PXM, 0, NotSerialized) // _PXM: Device Proximity - { - Return (MPXM (_UID)) - } - - Method (_OST, 3, NotSerialized) // _OST: OSPM Status Indication - { - MOST (_UID, Arg0, Arg1, Arg2) - } - - Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device, x=0-9 - { - MEJ0 (_UID, Arg0) - } - } - - Method (MTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (MP00, Arg1) - } - } - } - - Method (\_GPE._E03, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.MHPC.MSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000200000000, // Range Minimum - 0x00000009FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Device (S10) - { - Name (_ADR, 0x00020000) // _ADR: Address - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.numamem.dsl b/tests/data/acpi/q35/DSDT.numamem.dsl deleted file mode 100644 index e76de462f0f..00000000000 --- a/tests/data/acpi/q35/DSDT.numamem.dsl +++ /dev/null @@ -1,3138 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.numamem, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x00001E04 (7684) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x55 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - - Name (_PXM, Zero) // _PXM: Device Proximity - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - } - } -} - diff --git a/tests/data/acpi/q35/DSDT.tis.dsl b/tests/data/acpi/q35/DSDT.tis.dsl deleted file mode 100644 index a43e36bfe3a..00000000000 --- a/tests/data/acpi/q35/DSDT.tis.dsl +++ /dev/null @@ -1,3321 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20190509 (64-bit version) - * Copyright (c) 2000 - 2019 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of tests/data/acpi/q35/DSDT.tis, Tue Aug 4 11:14:15 2020 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000205B (8283) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x84 - * OEM ID "BOCHS " - * OEM Table ID "BXPCDSDT" - * OEM Revision 0x00000001 (1) - * Compiler ID "BXPC" - * Compiler Version 0x00000001 (1) - */ -DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPCDSDT", 0x00000001) -{ - Scope (\) - { - OperationRegion (DBG, SystemIO, 0x0402, One) - Field (DBG, ByteAcc, NoLock, Preserve) - { - DBGB, 8 - } - - Method (DBUG, 1, NotSerialized) - { - ToHexString (Arg0, Local0) - ToBuffer (Local0, Local0) - Local1 = (SizeOf (Local0) - One) - Local2 = Zero - While ((Local2 < Local1)) - { - DBGB = DerefOf (Local0 [Local2]) - Local2++ - } - - DBGB = 0x0A - } - } - - Scope (_SB) - { - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID - Name (_ADR, Zero) // _ADR: Address - Name (_UID, Zero) // _UID: Unique ID - Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities - { - CreateDWordField (Arg3, Zero, CDW1) - If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) - { - CreateDWordField (Arg3, 0x04, CDW2) - CreateDWordField (Arg3, 0x08, CDW3) - Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */ - Local0 &= 0x1F - If ((Arg1 != One)) - { - CDW1 |= 0x08 - } - - If ((CDW3 != Local0)) - { - CDW1 |= 0x10 - } - - CDW3 = Local0 - } - Else - { - CDW1 |= 0x04 - } - - Return (Arg3) - } - } - } - - Scope (_SB) - { - Device (HPET) - { - Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - OperationRegion (HPTM, SystemMemory, 0xFED00000, 0x0400) - Field (HPTM, DWordAcc, Lock, Preserve) - { - VEND, 32, - PRD, 32 - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Local0 = VEND /* \_SB_.HPET.VEND */ - Local1 = PRD /* \_SB_.HPET.PRD_ */ - Local0 >>= 0x10 - If (((Local0 == Zero) || (Local0 == 0xFFFF))) - { - Return (Zero) - } - - If (((Local1 == Zero) || (Local1 > 0x05F5E100))) - { - Return (Zero) - } - - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadOnly, - 0xFED00000, // Address Base - 0x00000400, // Address Length - ) - }) - } - } - - Scope (_SB.PCI0) - { - Device (ISA) - { - Name (_ADR, 0x001F0000) // _ADR: Address - OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C) - } - } - - Scope (_SB.PCI0.ISA) - { - Device (KBD) - { - Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0060, // Range Minimum - 0x0060, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0064, // Range Minimum - 0x0064, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IRQNoFlags () - {1} - }) - } - - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IRQNoFlags () - {12} - }) - } - - Device (LPT1) - { - Name (_HID, EisaId ("PNP0400") /* Standard LPT Parallel Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0378, // Range Minimum - 0x0378, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {7} - }) - } - - Device (COM1) - { - Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x03F8, // Range Minimum - 0x03F8, // Range Maximum - 0x00, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0070, // Range Minimum - 0x0070, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {8} - }) - } - } - - Name (PICF, Zero) - Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model - { - PICF = Arg0 - } - - Scope (_SB) - { - Scope (PCI0) - { - Name (PRTP, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - LNKE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - LNKF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - LNKG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - LNKH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - LNKD, - Zero - } - }) - Name (PRTA, Package (0x80) - { - Package (0x04) - { - 0xFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0xFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0xFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0001FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0003FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0007FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0008FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0009FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000CFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000DFFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000EFFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x000FFFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0010FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0011FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0012FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0013FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0014FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - Zero, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - One, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x02, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0015FFFF, - 0x03, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - Zero, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - One, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x02, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0016FFFF, - 0x03, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - Zero, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - One, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x02, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0017FFFF, - 0x03, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x0018FFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x0019FFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001AFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001BFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001CFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001DFFFF, - 0x03, - GSID, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - Zero, - GSIE, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - One, - GSIF, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x02, - GSIG, - Zero - }, - - Package (0x04) - { - 0x001EFFFF, - 0x03, - GSIH, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - Zero, - GSIA, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - One, - GSIB, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x02, - GSIC, - Zero - }, - - Package (0x04) - { - 0x001FFFFF, - 0x03, - GSID, - Zero - } - }) - Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table - { - If ((PICF == Zero)) - { - Return (PRTP) /* \_SB_.PCI0.PRTP */ - } - Else - { - Return (PRTA) /* \_SB_.PCI0.PRTA */ - } - } - } - - Field (PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) - { - PRQA, 8, - PRQB, 8, - PRQC, 8, - PRQD, 8, - Offset (0x08), - PRQE, 8, - PRQF, 8, - PRQG, 8, - PRQH, 8 - } - - Method (IQST, 1, NotSerialized) - { - If ((0x80 & Arg0)) - { - Return (0x09) - } - - Return (0x0B) - } - - Method (IQCR, 1, Serialized) - { - Name (PRR0, ResourceTemplate () - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, _Y00) - { - 0x00000000, - } - }) - CreateDWordField (PRR0, \_SB.IQCR._Y00._INT, PRRI) // _INT: Interrupts - PRRI = (Arg0 & 0x0F) - Return (PRR0) /* \_SB_.IQCR.PRR0 */ - } - - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQA)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQA |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQA)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQA = PRRI /* \_SB_.LNKA._SRS.PRRI */ - } - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQB)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQB |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQB)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQB = PRRI /* \_SB_.LNKB._SRS.PRRI */ - } - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQC)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQC |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQC)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQC = PRRI /* \_SB_.LNKC._SRS.PRRI */ - } - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQD)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQD |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQD)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQD = PRRI /* \_SB_.LNKD._SRS.PRRI */ - } - } - - Device (LNKE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQE)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQE |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQE)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQE = PRRI /* \_SB_.LNKE._SRS.PRRI */ - } - } - - Device (LNKF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x05) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQF)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQF |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQF)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQF = PRRI /* \_SB_.LNKF._SRS.PRRI */ - } - } - - Device (LNKG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x06) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQG)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQG |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQG)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQG = PRRI /* \_SB_.LNKG._SRS.PRRI */ - } - } - - Device (LNKH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x07) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000005, - 0x0000000A, - 0x0000000B, - } - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (IQST (PRQH)) - } - - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - PRQH |= 0x80 - } - - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (IQCR (PRQH)) - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - CreateDWordField (Arg0, 0x05, PRRI) - PRQH = PRRI /* \_SB_.LNKH._SRS.PRRI */ - } - } - - Device (GSIA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x10) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000010, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x11) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000011, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x12) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000012, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSID) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x13) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000013, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIE) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x14) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000014, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIF) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x15) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000015, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIG) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x16) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000016, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - - Device (GSIH) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x17) // _UID: Unique ID - Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) - { - 0x00000017, - } - }) - Method (_DIS, 0, NotSerialized) // _DIS: Disable Device - { - } - - Method (_SRS, 1, NotSerialized) // _SRS: Set Resource Settings - { - } - } - } - - Scope (_SB.PCI0) - { - Device (SMB0) - { - Name (_ADR, 0x001F0003) // _ADR: Address - } - } - - Scope (_SB) - { - Device (\_SB.PCI0.PRES) - { - Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "CPU Hotplug resources") // _UID: Unique ID - Mutex (CPLK, 0x00) - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0CD8, // Range Minimum - 0x0CD8, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C) - Field (PRST, ByteAcc, NoLock, WriteAsZeros) - { - Offset (0x04), - CPEN, 1, - CINS, 1, - CRMV, 1, - CEJ0, 1, - Offset (0x05), - CCMD, 8 - } - - Field (PRST, DWordAcc, NoLock, Preserve) - { - CSEL, 32, - Offset (0x08), - CDAT, 32 - } - - Method (_INI, 0, Serialized) // _INI: Initialize - { - CSEL = Zero - } - } - - Device (\_SB.CPUS) - { - Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID - Name (_CID, EisaId ("PNP0A05") /* Generic Container Device */) // _CID: Compatible ID - Method (CTFY, 2, NotSerialized) - { - If ((Arg0 == Zero)) - { - Notify (C000, Arg1) - } - } - - Method (CSTA, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - Local0 = Zero - If ((\_SB.PCI0.PRES.CPEN == One)) - { - Local0 = 0x0F - } - - Release (\_SB.PCI0.PRES.CPLK) - Return (Local0) - } - - Method (CEJ0, 1, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CEJ0 = One - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (CSCN, 0, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - Local0 = One - While ((Local0 == One)) - { - Local0 = Zero - \_SB.PCI0.PRES.CCMD = Zero - If ((\_SB.PCI0.PRES.CINS == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, One) - \_SB.PCI0.PRES.CINS = One - Local0 = One - } - ElseIf ((\_SB.PCI0.PRES.CRMV == One)) - { - CTFY (\_SB.PCI0.PRES.CDAT, 0x03) - \_SB.PCI0.PRES.CRMV = One - Local0 = One - } - } - - Release (\_SB.PCI0.PRES.CPLK) - } - - Method (COST, 4, Serialized) - { - Acquire (\_SB.PCI0.PRES.CPLK, 0xFFFF) - \_SB.PCI0.PRES.CSEL = Arg0 - \_SB.PCI0.PRES.CCMD = One - \_SB.PCI0.PRES.CDAT = Arg1 - \_SB.PCI0.PRES.CCMD = 0x02 - \_SB.PCI0.PRES.CDAT = Arg2 - Release (\_SB.PCI0.PRES.CPLK) - } - - Processor (C000, 0x00, 0x00000000, 0x00) - { - Method (_STA, 0, Serialized) // _STA: Status - { - Return (CSTA (Zero)) - } - - Name (_MAT, Buffer (0x08) // _MAT: Multiple APIC Table Entry - { - 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 // ........ - }) - Method (_OST, 3, Serialized) // _OST: OSPM Status Indication - { - COST (Zero, Arg0, Arg1, Arg2) - } - } - } - } - - Method (\_GPE._E02, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF - { - \_SB.CPUS.CSCN () - } - - Scope (_GPE) - { - Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID - } - - Scope (\_SB.PCI0) - { - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CF8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic, DenseTranslation) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic, DenseTranslation) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000A0000, // Range Minimum - 0x000BFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00020000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0x08000000, // Range Minimum - 0xAFFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0xA8000000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xC0000000, // Range Minimum - 0xFEBFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x3EC00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000100000000, // Range Minimum - 0x00000008FFFFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000800000000, // Length - ,, , AddressRangeMemory, TypeStatic) - Memory32Fixed (ReadWrite, - 0xFED40000, // Address Base - 0x00005000, // Address Length - ) - }) - Device (GPE0) - { - Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID - Name (_UID, "GPE0 resources") // _UID: Unique ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0620, // Range Minimum - 0x0620, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - }) - } - } - - Scope (\) - { - Name (_S3, Package (0x04) // _S3_: S3 System State - { - One, - One, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x02, - 0x02, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - Zero, - Zero, - Zero, - Zero - }) - } - - Scope (\_SB.PCI0) - { - Device (FWCF) - { - Name (_HID, "QEMU0002") // _HID: Hardware ID - Name (_STA, 0x0B) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0510, // Range Minimum - 0x0510, // Range Maximum - 0x01, // Alignment - 0x0C, // Length - ) - }) - } - } - - Scope (\_SB) - { - Scope (PCI0) - { - Device (S00) - { - Name (_ADR, Zero) // _ADR: Address - } - - Device (S08) - { - Name (_ADR, 0x00010000) // _ADR: Address - Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State - { - Return (Zero) - } - - Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State - { - Return (Zero) - } - - Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State - { - Return (Zero) - } - } - - Method (PCNT, 0, NotSerialized) - { - } - - Device (TPM) - { - Name (_HID, "MSFT0101" /* TPM 2.0 Security Device */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - Memory32Fixed (ReadWrite, - 0xFED40000, // Address Base - 0x00005000, // Address Length - ) - }) - OperationRegion (TPP2, SystemMemory, 0xFED45100, 0x5A) - Field (TPP2, AnyAcc, NoLock, Preserve) - { - PPIN, 8, - PPIP, 32, - PPRP, 32, - PPRQ, 32, - PPRM, 32, - LPPR, 32 - } - - OperationRegion (TPP3, SystemMemory, 0xFED4515A, One) - Field (TPP3, ByteAcc, NoLock, Preserve) - { - MOVV, 8 - } - - Method (TPFN, 1, Serialized) - { - If ((Arg0 >= 0x0100)) - { - Return (Zero) - } - - OperationRegion (TPP1, SystemMemory, (0xFED45000 + Arg0), One) - Field (TPP1, ByteAcc, NoLock, Preserve) - { - TPPF, 8 - } - - Return (TPPF) /* \_SB_.PCI0.TPM_.TPFN.TPPF */ - } - - Name (TPM2, Package (0x02) - { - Zero, - Zero - }) - Name (TPM3, Package (0x03) - { - Zero, - Zero, - Zero - }) - Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method - { - If ((Arg0 == ToUUID ("3dddfaa6-361b-4eb4-a424-8d10089d1653") /* Physical Presence Interface */)) - { - If ((Arg2 == Zero)) - { - Return (Buffer (0x02) - { - 0xFF, 0x01 // .. - }) - } - - If ((Arg2 == One)) - { - Return ("1.3") - } - - If ((Arg2 == 0x02)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - If (((Local1 & 0x07) == Zero)) - { - Return (One) - } - - PPRQ = Local0 - PPRM = Zero - Return (Zero) - } - - If ((Arg2 == 0x03)) - { - If ((Arg1 == One)) - { - TPM2 [One] = PPRQ /* \_SB_.PCI0.TPM_.PPRQ */ - Return (TPM2) /* \_SB_.PCI0.TPM_.TPM2 */ - } - - If ((Arg1 == 0x02)) - { - TPM3 [One] = PPRQ /* \_SB_.PCI0.TPM_.PPRQ */ - TPM3 [0x02] = PPRM /* \_SB_.PCI0.TPM_.PPRM */ - Return (TPM3) /* \_SB_.PCI0.TPM_.TPM3 */ - } - } - - If ((Arg2 == 0x04)) - { - Return (0x02) - } - - If ((Arg2 == 0x05)) - { - TPM3 [One] = LPPR /* \_SB_.PCI0.TPM_.LPPR */ - TPM3 [0x02] = PPRP /* \_SB_.PCI0.TPM_.PPRP */ - Return (TPM3) /* \_SB_.PCI0.TPM_.TPM3 */ - } - - If ((Arg2 == 0x06)) - { - Return (0x03) - } - - If ((Arg2 == 0x07)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - If (((Local1 & 0x07) == Zero)) - { - Return (One) - } - - If (((Local1 & 0x07) == 0x02)) - { - Return (0x03) - } - - If ((Arg1 == One)) - { - PPRQ = Local0 - PPRM = Zero - } - - If ((Arg1 == 0x02)) - { - PPRQ = Local0 - PPRM = DerefOf (Arg3 [One]) - } - - Return (Zero) - } - - If ((Arg2 == 0x08)) - { - Local0 = DerefOf (Arg3 [Zero]) - Local1 = TPFN (Local0) - Return ((Local1 & 0x07)) - } - - Return (Buffer (One) - { - 0x00 // . - }) - } - - If ((Arg0 == ToUUID ("376054ed-cc13-4675-901c-4756d7f2d45d"))) - { - If ((Arg2 == Zero)) - { - Return (Buffer (One) - { - 0x03 // . - }) - } - - If ((Arg2 == One)) - { - Local0 = DerefOf (Arg3 [Zero]) - MOVV = Local0 - Return (Zero) - } - } - } - } - } - } -} - diff --git a/tests/data/acpi/q35/FACP.acpihmat b/tests/data/acpi/q35/FACP.acpihmat deleted file mode 100644 index 72c9d97902a4bbf14896023d9ba78e0899d6517b..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 244 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 zEC2ui000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 b0000000000000000000000000{9*h5sM<%p diff --git a/tests/libqtest.c.orig b/tests/libqtest.c.orig deleted file mode 100644 index a1d33a1d0c8..00000000000 --- a/tests/libqtest.c.orig +++ /dev/null @@ -1,1106 +0,0 @@ -/* - * QTest - * - * Copyright IBM, Corp. 2012 - * Copyright Red Hat, Inc. 2012 - * Copyright SUSE LINUX Products GmbH 2013 - * - * Authors: - * Anthony Liguori - * Paolo Bonzini - * Andreas Färber - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -#include "qemu/osdep.h" - -#include -#include -#include - -#include "libqtest.h" -#include "qemu/cutils.h" -#include "qapi/error.h" -#include "qapi/qmp/json-parser.h" -#include "qapi/qmp/json-streamer.h" -#include "qapi/qmp/qdict.h" -#include "qapi/qmp/qjson.h" -#include "qapi/qmp/qlist.h" -#include "qapi/qmp/qstring.h" - -#define MAX_IRQ 256 -#define SOCKET_TIMEOUT 50 - -QTestState *global_qtest; - -struct QTestState -{ - int fd; - int qmp_fd; - bool irq_level[MAX_IRQ]; - GString *rx; - pid_t qemu_pid; /* our child QEMU process */ - bool big_endian; -}; - -static GHookList abrt_hooks; -static struct sigaction sigact_old; - -#define g_assert_no_errno(ret) do { \ - g_assert_cmpint(ret, !=, -1); \ -} while (0) - -static int qtest_query_target_endianness(QTestState *s); - -static int init_socket(const char *socket_path) -{ - struct sockaddr_un addr; - int sock; - int ret; - - sock = socket(PF_UNIX, SOCK_STREAM, 0); - g_assert_no_errno(sock); - - addr.sun_family = AF_UNIX; - snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", socket_path); - qemu_set_cloexec(sock); - - do { - ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr)); - } while (ret == -1 && errno == EINTR); - g_assert_no_errno(ret); - ret = listen(sock, 1); - g_assert_no_errno(ret); - - return sock; -} - -static int socket_accept(int sock) -{ - struct sockaddr_un addr; - socklen_t addrlen; - int ret; - struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT, - .tv_usec = 0 }; - - setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (void *)&timeout, - sizeof(timeout)); - - do { - addrlen = sizeof(addr); - ret = accept(sock, (struct sockaddr *)&addr, &addrlen); - } while (ret == -1 && errno == EINTR); - if (ret == -1) { - fprintf(stderr, "%s failed: %s\n", __func__, strerror(errno)); - } - close(sock); - - return ret; -} - -static void kill_qemu(QTestState *s) -{ - int wstatus = 0; - - if (s->qemu_pid != -1) { - kill(s->qemu_pid, SIGTERM); - waitpid(s->qemu_pid, &wstatus, 0); - - if (WIFSIGNALED(wstatus)) { - assert(!WCOREDUMP(wstatus)); - } - } -} - -static void kill_qemu_hook_func(void *s) -{ - kill_qemu(s); -} - -static void sigabrt_handler(int signo) -{ - g_hook_list_invoke(&abrt_hooks, FALSE); -} - -static void setup_sigabrt_handler(void) -{ - struct sigaction sigact; - - /* Catch SIGABRT to clean up on g_assert() failure */ - sigact = (struct sigaction){ - .sa_handler = sigabrt_handler, - .sa_flags = SA_RESETHAND, - }; - sigemptyset(&sigact.sa_mask); - sigaction(SIGABRT, &sigact, &sigact_old); -} - -static void cleanup_sigabrt_handler(void) -{ - sigaction(SIGABRT, &sigact_old, NULL); -} - -void qtest_add_abrt_handler(GHookFunc fn, const void *data) -{ - GHook *hook; - - /* Only install SIGABRT handler once */ - if (!abrt_hooks.is_setup) { - g_hook_list_init(&abrt_hooks, sizeof(GHook)); - } - setup_sigabrt_handler(); - - hook = g_hook_alloc(&abrt_hooks); - hook->func = fn; - hook->data = (void *)data; - - g_hook_prepend(&abrt_hooks, hook); -} - -static const char *qtest_qemu_binary(void) -{ - const char *qemu_bin; - - qemu_bin = getenv("QTEST_QEMU_BINARY"); - if (!qemu_bin) { - fprintf(stderr, "Environment variable QTEST_QEMU_BINARY required\n"); - exit(1); - } - - return qemu_bin; -} - -QTestState *qtest_init_without_qmp_handshake(bool use_oob, - const char *extra_args) -{ - QTestState *s; - int sock, qmpsock, i; - gchar *socket_path; - gchar *qmp_socket_path; - gchar *command; - const char *qemu_binary = qtest_qemu_binary(); - - s = g_new(QTestState, 1); - - socket_path = g_strdup_printf("/tmp/qtest-%d.sock", getpid()); - qmp_socket_path = g_strdup_printf("/tmp/qtest-%d.qmp", getpid()); - - /* It's possible that if an earlier test run crashed it might - * have left a stale unix socket lying around. Delete any - * stale old socket to avoid spurious test failures with - * tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1) - */ - unlink(socket_path); - unlink(qmp_socket_path); - - sock = init_socket(socket_path); - qmpsock = init_socket(qmp_socket_path); - - qtest_add_abrt_handler(kill_qemu_hook_func, s); - - s->qemu_pid = fork(); - if (s->qemu_pid == 0) { - setenv("QEMU_AUDIO_DRV", "none", true); - command = g_strdup_printf("exec %s " - "-qtest unix:%s,nowait " - "-qtest-log %s " - "-chardev socket,path=%s,nowait,id=char0 " - "-mon chardev=char0,mode=control%s " - "-machine accel=qtest " - "-display none " - "%s", qemu_binary, socket_path, - getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null", - qmp_socket_path, use_oob ? ",x-oob=on" : "", - extra_args ?: ""); - execlp("/bin/sh", "sh", "-c", command, NULL); - exit(1); - } - - s->fd = socket_accept(sock); - if (s->fd >= 0) { - s->qmp_fd = socket_accept(qmpsock); - } - unlink(socket_path); - unlink(qmp_socket_path); - g_free(socket_path); - g_free(qmp_socket_path); - - g_assert(s->fd >= 0 && s->qmp_fd >= 0); - - s->rx = g_string_new(""); - for (i = 0; i < MAX_IRQ; i++) { - s->irq_level[i] = false; - } - - if (getenv("QTEST_STOP")) { - kill(s->qemu_pid, SIGSTOP); - } - - /* ask endianness of the target */ - - s->big_endian = qtest_query_target_endianness(s); - - return s; -} - -QTestState *qtest_init(const char *extra_args) -{ - QTestState *s = qtest_init_without_qmp_handshake(false, extra_args); - - /* Read the QMP greeting and then do the handshake */ - qtest_qmp_discard_response(s, ""); - qtest_qmp_discard_response(s, "{ 'execute': 'qmp_capabilities' }"); - - return s; -} - -QTestState *qtest_vstartf(const char *fmt, va_list ap) -{ - char *args = g_strdup_vprintf(fmt, ap); - QTestState *s; - - s = qtest_start(args); - g_free(args); - global_qtest = NULL; - return s; -} - -QTestState *qtest_startf(const char *fmt, ...) -{ - va_list ap; - QTestState *s; - - va_start(ap, fmt); - s = qtest_vstartf(fmt, ap); - va_end(ap); - return s; -} - -void qtest_quit(QTestState *s) -{ - g_hook_destroy_link(&abrt_hooks, g_hook_find_data(&abrt_hooks, TRUE, s)); - - /* Uninstall SIGABRT handler on last instance */ - cleanup_sigabrt_handler(); - - kill_qemu(s); - close(s->fd); - close(s->qmp_fd); - g_string_free(s->rx, true); - g_free(s); -} - -static void socket_send(int fd, const char *buf, size_t size) -{ - size_t offset; - - offset = 0; - while (offset < size) { - ssize_t len; - - len = write(fd, buf + offset, size - offset); - if (len == -1 && errno == EINTR) { - continue; - } - - g_assert_no_errno(len); - g_assert_cmpint(len, >, 0); - - offset += len; - } -} - -static void socket_sendf(int fd, const char *fmt, va_list ap) -{ - gchar *str = g_strdup_vprintf(fmt, ap); - size_t size = strlen(str); - - socket_send(fd, str, size); - g_free(str); -} - -static void GCC_FMT_ATTR(2, 3) qtest_sendf(QTestState *s, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - socket_sendf(s->fd, fmt, ap); - va_end(ap); -} - -static GString *qtest_recv_line(QTestState *s) -{ - GString *line; - size_t offset; - char *eol; - - while ((eol = strchr(s->rx->str, '\n')) == NULL) { - ssize_t len; - char buffer[1024]; - - len = read(s->fd, buffer, sizeof(buffer)); - if (len == -1 && errno == EINTR) { - continue; - } - - if (len == -1 || len == 0) { - fprintf(stderr, "Broken pipe\n"); - exit(1); - } - - g_string_append_len(s->rx, buffer, len); - } - - offset = eol - s->rx->str; - line = g_string_new_len(s->rx->str, offset); - g_string_erase(s->rx, 0, offset + 1); - - return line; -} - -static gchar **qtest_rsp(QTestState *s, int expected_args) -{ - GString *line; - gchar **words; - int i; - -redo: - line = qtest_recv_line(s); - words = g_strsplit(line->str, " ", 0); - g_string_free(line, TRUE); - - if (strcmp(words[0], "IRQ") == 0) { - long irq; - int ret; - - g_assert(words[1] != NULL); - g_assert(words[2] != NULL); - - ret = qemu_strtol(words[2], NULL, 0, &irq); - g_assert(!ret); - g_assert_cmpint(irq, >=, 0); - g_assert_cmpint(irq, <, MAX_IRQ); - - if (strcmp(words[1], "raise") == 0) { - s->irq_level[irq] = true; - } else { - s->irq_level[irq] = false; - } - - g_strfreev(words); - goto redo; - } - - g_assert(words[0] != NULL); - g_assert_cmpstr(words[0], ==, "OK"); - - if (expected_args) { - for (i = 0; i < expected_args; i++) { - g_assert(words[i] != NULL); - } - } else { - g_strfreev(words); - } - - return words; -} - -static int qtest_query_target_endianness(QTestState *s) -{ - gchar **args; - int big_endian; - - qtest_sendf(s, "endianness\n"); - args = qtest_rsp(s, 1); - g_assert(strcmp(args[1], "big") == 0 || strcmp(args[1], "little") == 0); - big_endian = strcmp(args[1], "big") == 0; - g_strfreev(args); - - return big_endian; -} - -typedef struct { - JSONMessageParser parser; - QDict *response; -} QMPResponseParser; - -static void qmp_response(JSONMessageParser *parser, GQueue *tokens) -{ - QMPResponseParser *qmp = container_of(parser, QMPResponseParser, parser); - QObject *obj; - - obj = json_parser_parse(tokens, NULL); - if (!obj) { - fprintf(stderr, "QMP JSON response parsing failed\n"); - exit(1); - } - - g_assert(!qmp->response); - qmp->response = qobject_to(QDict, obj); - g_assert(qmp->response); -} - -QDict *qmp_fd_receive(int fd) -{ - QMPResponseParser qmp; - bool log = getenv("QTEST_LOG") != NULL; - - qmp.response = NULL; - json_message_parser_init(&qmp.parser, qmp_response); - while (!qmp.response) { - ssize_t len; - char c; - - len = read(fd, &c, 1); - if (len == -1 && errno == EINTR) { - continue; - } - - if (len == -1 || len == 0) { - fprintf(stderr, "Broken pipe\n"); - exit(1); - } - - if (log) { - len = write(2, &c, 1); - } - json_message_parser_feed(&qmp.parser, &c, 1); - } - json_message_parser_destroy(&qmp.parser); - - return qmp.response; -} - -QDict *qtest_qmp_receive(QTestState *s) -{ - return qmp_fd_receive(s->qmp_fd); -} - -/** - * Allow users to send a message without waiting for the reply, - * in the case that they choose to discard all replies up until - * a particular EVENT is received. - */ -void qmp_fd_sendv(int fd, const char *fmt, va_list ap) -{ - va_list ap_copy; - QObject *qobj; - - /* qobject_from_jsonv() silently eats leading 0xff as invalid - * JSON, but we want to test sending them over the wire to force - * resyncs */ - if (*fmt == '\377') { - socket_send(fd, fmt, 1); - fmt++; - } - - /* Going through qobject ensures we escape strings properly. - * This seemingly unnecessary copy is required in case va_list - * is an array type. - */ - va_copy(ap_copy, ap); - qobj = qobject_from_jsonv(fmt, &ap_copy, &error_abort); - va_end(ap_copy); - - /* No need to send anything for an empty QObject. */ - if (qobj) { - int log = getenv("QTEST_LOG") != NULL; - QString *qstr = qobject_to_json(qobj); - const char *str; - - /* - * BUG: QMP doesn't react to input until it sees a newline, an - * object, or an array. Work-around: give it a newline. - */ - qstring_append_chr(qstr, '\n'); - str = qstring_get_str(qstr); - - if (log) { - fprintf(stderr, "%s", str); - } - /* Send QMP request */ - socket_send(fd, str, qstring_get_length(qstr)); - - qobject_unref(qstr); - qobject_unref(qobj); - } -} - -void qtest_async_qmpv(QTestState *s, const char *fmt, va_list ap) -{ - qmp_fd_sendv(s->qmp_fd, fmt, ap); -} - -QDict *qmp_fdv(int fd, const char *fmt, va_list ap) -{ - qmp_fd_sendv(fd, fmt, ap); - - return qmp_fd_receive(fd); -} - -QDict *qtest_qmpv(QTestState *s, const char *fmt, va_list ap) -{ - qtest_async_qmpv(s, fmt, ap); - - /* Receive reply */ - return qtest_qmp_receive(s); -} - -QDict *qmp_fd(int fd, const char *fmt, ...) -{ - va_list ap; - QDict *response; - - va_start(ap, fmt); - response = qmp_fdv(fd, fmt, ap); - va_end(ap); - return response; -} - -void qmp_fd_send(int fd, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - qmp_fd_sendv(fd, fmt, ap); - va_end(ap); -} - -QDict *qtest_qmp(QTestState *s, const char *fmt, ...) -{ - va_list ap; - QDict *response; - - va_start(ap, fmt); - response = qtest_qmpv(s, fmt, ap); - va_end(ap); - return response; -} - -void qtest_async_qmp(QTestState *s, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - qtest_async_qmpv(s, fmt, ap); - va_end(ap); -} - -void qtest_qmpv_discard_response(QTestState *s, const char *fmt, va_list ap) -{ - QDict *response = qtest_qmpv(s, fmt, ap); - qobject_unref(response); -} - -void qtest_qmp_discard_response(QTestState *s, const char *fmt, ...) -{ - va_list ap; - QDict *response; - - va_start(ap, fmt); - response = qtest_qmpv(s, fmt, ap); - va_end(ap); - qobject_unref(response); -} - -QDict *qtest_qmp_eventwait_ref(QTestState *s, const char *event) -{ - QDict *response; - - for (;;) { - response = qtest_qmp_receive(s); - if ((qdict_haskey(response, "event")) && - (strcmp(qdict_get_str(response, "event"), event) == 0)) { - return response; - } - qobject_unref(response); - } -} - -void qtest_qmp_eventwait(QTestState *s, const char *event) -{ - QDict *response; - - response = qtest_qmp_eventwait_ref(s, event); - qobject_unref(response); -} - -char *qtest_hmpv(QTestState *s, const char *fmt, va_list ap) -{ - char *cmd; - QDict *resp; - char *ret; - - cmd = g_strdup_vprintf(fmt, ap); - resp = qtest_qmp(s, "{'execute': 'human-monitor-command'," - " 'arguments': {'command-line': %s}}", - cmd); - ret = g_strdup(qdict_get_try_str(resp, "return")); - while (ret == NULL && qdict_get_try_str(resp, "event")) { - /* Ignore asynchronous QMP events */ - qobject_unref(resp); - resp = qtest_qmp_receive(s); - ret = g_strdup(qdict_get_try_str(resp, "return")); - } - g_assert(ret); - qobject_unref(resp); - g_free(cmd); - return ret; -} - -char *qtest_hmp(QTestState *s, const char *fmt, ...) -{ - va_list ap; - char *ret; - - va_start(ap, fmt); - ret = qtest_hmpv(s, fmt, ap); - va_end(ap); - return ret; -} - -const char *qtest_get_arch(void) -{ - const char *qemu = qtest_qemu_binary(); - const char *end = strrchr(qemu, '/'); - - return end + strlen("/qemu-system-"); -} - -bool qtest_get_irq(QTestState *s, int num) -{ - /* dummy operation in order to make sure irq is up to date */ - qtest_inb(s, 0); - - return s->irq_level[num]; -} - -static int64_t qtest_clock_rsp(QTestState *s) -{ - gchar **words; - int64_t clock; - words = qtest_rsp(s, 2); - clock = g_ascii_strtoll(words[1], NULL, 0); - g_strfreev(words); - return clock; -} - -int64_t qtest_clock_step_next(QTestState *s) -{ - qtest_sendf(s, "clock_step\n"); - return qtest_clock_rsp(s); -} - -int64_t qtest_clock_step(QTestState *s, int64_t step) -{ - qtest_sendf(s, "clock_step %"PRIi64"\n", step); - return qtest_clock_rsp(s); -} - -int64_t qtest_clock_set(QTestState *s, int64_t val) -{ - qtest_sendf(s, "clock_set %"PRIi64"\n", val); - return qtest_clock_rsp(s); -} - -void qtest_irq_intercept_out(QTestState *s, const char *qom_path) -{ - qtest_sendf(s, "irq_intercept_out %s\n", qom_path); - qtest_rsp(s, 0); -} - -void qtest_irq_intercept_in(QTestState *s, const char *qom_path) -{ - qtest_sendf(s, "irq_intercept_in %s\n", qom_path); - qtest_rsp(s, 0); -} - -static void qtest_out(QTestState *s, const char *cmd, uint16_t addr, uint32_t value) -{ - qtest_sendf(s, "%s 0x%x 0x%x\n", cmd, addr, value); - qtest_rsp(s, 0); -} - -void qtest_outb(QTestState *s, uint16_t addr, uint8_t value) -{ - qtest_out(s, "outb", addr, value); -} - -void qtest_outw(QTestState *s, uint16_t addr, uint16_t value) -{ - qtest_out(s, "outw", addr, value); -} - -void qtest_outl(QTestState *s, uint16_t addr, uint32_t value) -{ - qtest_out(s, "outl", addr, value); -} - -static uint32_t qtest_in(QTestState *s, const char *cmd, uint16_t addr) -{ - gchar **args; - int ret; - unsigned long value; - - qtest_sendf(s, "%s 0x%x\n", cmd, addr); - args = qtest_rsp(s, 2); - ret = qemu_strtoul(args[1], NULL, 0, &value); - g_assert(!ret && value <= UINT32_MAX); - g_strfreev(args); - - return value; -} - -uint8_t qtest_inb(QTestState *s, uint16_t addr) -{ - return qtest_in(s, "inb", addr); -} - -uint16_t qtest_inw(QTestState *s, uint16_t addr) -{ - return qtest_in(s, "inw", addr); -} - -uint32_t qtest_inl(QTestState *s, uint16_t addr) -{ - return qtest_in(s, "inl", addr); -} - -static void qtest_write(QTestState *s, const char *cmd, uint64_t addr, - uint64_t value) -{ - qtest_sendf(s, "%s 0x%" PRIx64 " 0x%" PRIx64 "\n", cmd, addr, value); - qtest_rsp(s, 0); -} - -void qtest_writeb(QTestState *s, uint64_t addr, uint8_t value) -{ - qtest_write(s, "writeb", addr, value); -} - -void qtest_writew(QTestState *s, uint64_t addr, uint16_t value) -{ - qtest_write(s, "writew", addr, value); -} - -void qtest_writel(QTestState *s, uint64_t addr, uint32_t value) -{ - qtest_write(s, "writel", addr, value); -} - -void qtest_writeq(QTestState *s, uint64_t addr, uint64_t value) -{ - qtest_write(s, "writeq", addr, value); -} - -static uint64_t qtest_read(QTestState *s, const char *cmd, uint64_t addr) -{ - gchar **args; - int ret; - uint64_t value; - - qtest_sendf(s, "%s 0x%" PRIx64 "\n", cmd, addr); - args = qtest_rsp(s, 2); - ret = qemu_strtou64(args[1], NULL, 0, &value); - g_assert(!ret); - g_strfreev(args); - - return value; -} - -uint8_t qtest_readb(QTestState *s, uint64_t addr) -{ - return qtest_read(s, "readb", addr); -} - -uint16_t qtest_readw(QTestState *s, uint64_t addr) -{ - return qtest_read(s, "readw", addr); -} - -uint32_t qtest_readl(QTestState *s, uint64_t addr) -{ - return qtest_read(s, "readl", addr); -} - -uint64_t qtest_readq(QTestState *s, uint64_t addr) -{ - return qtest_read(s, "readq", addr); -} - -static int hex2nib(char ch) -{ - if (ch >= '0' && ch <= '9') { - return ch - '0'; - } else if (ch >= 'a' && ch <= 'f') { - return 10 + (ch - 'a'); - } else if (ch >= 'A' && ch <= 'F') { - return 10 + (ch - 'a'); - } else { - return -1; - } -} - -void qtest_memread(QTestState *s, uint64_t addr, void *data, size_t size) -{ - uint8_t *ptr = data; - gchar **args; - size_t i; - - if (!size) { - return; - } - - qtest_sendf(s, "read 0x%" PRIx64 " 0x%zx\n", addr, size); - args = qtest_rsp(s, 2); - - for (i = 0; i < size; i++) { - ptr[i] = hex2nib(args[1][2 + (i * 2)]) << 4; - ptr[i] |= hex2nib(args[1][2 + (i * 2) + 1]); - } - - g_strfreev(args); -} - -uint64_t qtest_rtas_call(QTestState *s, const char *name, - uint32_t nargs, uint64_t args, - uint32_t nret, uint64_t ret) -{ - qtest_sendf(s, "rtas %s %u 0x%"PRIx64" %u 0x%"PRIx64"\n", - name, nargs, args, nret, ret); - qtest_rsp(s, 0); - return 0; -} - -void qtest_add_func(const char *str, void (*fn)(void)) -{ - gchar *path = g_strdup_printf("/%s/%s", qtest_get_arch(), str); - g_test_add_func(path, fn); - g_free(path); -} - -void qtest_add_data_func_full(const char *str, void *data, - void (*fn)(const void *), - GDestroyNotify data_free_func) -{ - gchar *path = g_strdup_printf("/%s/%s", qtest_get_arch(), str); - g_test_add_data_func_full(path, data, fn, data_free_func); - g_free(path); -} - -void qtest_add_data_func(const char *str, const void *data, - void (*fn)(const void *)) -{ - gchar *path = g_strdup_printf("/%s/%s", qtest_get_arch(), str); - g_test_add_data_func(path, data, fn); - g_free(path); -} - -void qtest_bufwrite(QTestState *s, uint64_t addr, const void *data, size_t size) -{ - gchar *bdata; - - bdata = g_base64_encode(data, size); - qtest_sendf(s, "b64write 0x%" PRIx64 " 0x%zx ", addr, size); - socket_send(s->fd, bdata, strlen(bdata)); - socket_send(s->fd, "\n", 1); - qtest_rsp(s, 0); - g_free(bdata); -} - -void qtest_bufread(QTestState *s, uint64_t addr, void *data, size_t size) -{ - gchar **args; - size_t len; - - qtest_sendf(s, "b64read 0x%" PRIx64 " 0x%zx\n", addr, size); - args = qtest_rsp(s, 2); - - g_base64_decode_inplace(args[1], &len); - if (size != len) { - fprintf(stderr, "bufread: asked for %zu bytes but decoded %zu\n", - size, len); - len = MIN(len, size); - } - - memcpy(data, args[1], len); - g_strfreev(args); -} - -void qtest_memwrite(QTestState *s, uint64_t addr, const void *data, size_t size) -{ - const uint8_t *ptr = data; - size_t i; - char *enc; - - if (!size) { - return; - } - - enc = g_malloc(2 * size + 1); - - for (i = 0; i < size; i++) { - sprintf(&enc[i * 2], "%02x", ptr[i]); - } - - qtest_sendf(s, "write 0x%" PRIx64 " 0x%zx 0x%s\n", addr, size, enc); - qtest_rsp(s, 0); - g_free(enc); -} - -void qtest_memset(QTestState *s, uint64_t addr, uint8_t pattern, size_t size) -{ - qtest_sendf(s, "memset 0x%" PRIx64 " 0x%zx 0x%02x\n", addr, size, pattern); - qtest_rsp(s, 0); -} - -QDict *qmp(const char *fmt, ...) -{ - va_list ap; - QDict *response; - - va_start(ap, fmt); - response = qtest_qmpv(global_qtest, fmt, ap); - va_end(ap); - return response; -} - -void qmp_async(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - qtest_async_qmpv(global_qtest, fmt, ap); - va_end(ap); -} - -void qmp_discard_response(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - qtest_qmpv_discard_response(global_qtest, fmt, ap); - va_end(ap); -} -char *hmp(const char *fmt, ...) -{ - va_list ap; - char *ret; - - va_start(ap, fmt); - ret = qtest_hmpv(global_qtest, fmt, ap); - va_end(ap); - return ret; -} - -bool qtest_big_endian(QTestState *s) -{ - return s->big_endian; -} - -void qtest_cb_for_every_machine(void (*cb)(const char *machine)) -{ - QDict *response, *minfo; - QList *list; - const QListEntry *p; - QObject *qobj; - QString *qstr; - const char *mname; - - qtest_start("-machine none"); - response = qmp("{ 'execute': 'query-machines' }"); - g_assert(response); - list = qdict_get_qlist(response, "return"); - g_assert(list); - - for (p = qlist_first(list); p; p = qlist_next(p)) { - minfo = qobject_to(QDict, qlist_entry_obj(p)); - g_assert(minfo); - qobj = qdict_get(minfo, "name"); - g_assert(qobj); - qstr = qobject_to(QString, qobj); - g_assert(qstr); - mname = qstring_get_str(qstr); - cb(mname); - } - - qtest_end(); - qobject_unref(response); -} - -/* - * Generic hot-plugging test via the device_add QMP command. - */ -void qtest_qmp_device_add(const char *driver, const char *id, const char *fmt, - ...) -{ - QDict *response; - char *cmd, *opts = NULL; - va_list va; - - if (fmt) { - va_start(va, fmt); - opts = g_strdup_vprintf(fmt, va); - va_end(va); - } - - cmd = g_strdup_printf("{'execute': 'device_add'," - " 'arguments': { 'driver': '%s', 'id': '%s'%s%s }}", - driver, id, opts ? ", " : "", opts ? opts : ""); - g_free(opts); - - response = qmp(cmd); - g_free(cmd); - g_assert(response); - g_assert(!qdict_haskey(response, "event")); /* We don't expect any events */ - g_assert(!qdict_haskey(response, "error")); - qobject_unref(response); -} - -/* - * Generic hot-unplugging test via the device_del QMP command. - * Device deletion will get one response and one event. For example: - * - * {'execute': 'device_del','arguments': { 'id': 'scsi-hd'}} - * - * will get this one: - * - * {"timestamp": {"seconds": 1505289667, "microseconds": 569862}, - * "event": "DEVICE_DELETED", "data": {"device": "scsi-hd", - * "path": "/machine/peripheral/scsi-hd"}} - * - * and this one: - * - * {"return": {}} - * - * But the order of arrival may vary - so we've got to detect both. - */ -void qtest_qmp_device_del(const char *id) -{ - QDict *response1, *response2, *event = NULL; - char *cmd; - - cmd = g_strdup_printf("{'execute': 'device_del'," - " 'arguments': { 'id': '%s' }}", id); - response1 = qmp(cmd); - g_free(cmd); - g_assert(response1); - g_assert(!qdict_haskey(response1, "error")); - - response2 = qmp(""); - g_assert(response2); - g_assert(!qdict_haskey(response2, "error")); - - if (qdict_haskey(response1, "event")) { - event = response1; - } else if (qdict_haskey(response2, "event")) { - event = response2; - } - g_assert(event); - g_assert_cmpstr(qdict_get_str(event, "event"), ==, "DEVICE_DELETED"); - - qobject_unref(response1); - qobject_unref(response2); -} diff --git a/tests/qemu-iotests/core.12067 b/tests/qemu-iotests/core.12067 deleted file mode 100644 index 0ddb68f76aacbf14f48ba13b2ce9d4d52fab0ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 22716416 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 zwi3rLy}wyu|Bug<7r!!kUFmOKNBevG!Gr4SY&m4vc>h7m?@#&Q*pBx^n;*P#*N=4l zm2ExfwfBy{_|>?6d}H+XoBt}e-*U&gHLfEg{LNTPHf{cExcz$Kv+c#+&dTq+>#k8> zTXwD=m;DC5c0D;WoA+%OR_|?kFKm1*xIF54vb&>n!3eqLACKG~y$=ohE+jWk`Th~w zIi@vb(+BRW&-canv7gBP{`$WE#`e$F)e~iTl=TjLJ=*{F(fjZJbo;&cHQav1TjKNY z>#yzhOV|IJ?SFCa{Nl|k_$-U-zy<5K6dK*3ZX`zsDRHb8@LT z`Q*`m3$^~qrPg(;^AtCV`F~xlr>{_*_WoFZ`MLOvdZIeL?KfGu!O5k8wN5TI#r)l4 z>(?>(m-vkPOXK|>cgM>8eyIFpe0D$CxSpO{J4=uEy|&wL&TF{+25##toptMLyZzc; z%l$7tU+;`Iy#2D={r?>+e*a&)|G)0a?7OAx^ZrL!T|d0Ey8P3Zjr{rEc4__e3+`BU z&#E+!@!iq;${qj1?RUp(xcyqb71!r)j^2LX_#bY+Z@h-vuj|{LrAgl!z5VX` zA8x<9Uc>FzcUNcWxNnc%e&72aZolunhTE?#p6#!SHvHjLx$l4Cp6kAB+K;pHh^wlf zSC3`mCtOv1-}Sp}eEikb=hZP+SI75WzxrIe@n=SVmzDl4^5w(ZbKl0>J8)n%*OkrF zz4yugr++`$7oYjf-|H-;|3*qWUMuT9!m{@V>37iOpDk;TF)O)_M*sFoukQev$UW&`y2VavVV&tD{suoJEBbI|3NnXn<&%%_2+DS{IqJh zc2>SIE4RtY{j&1lto)a(oSl^)&dSAmXa7b@jHmtcnQZ*3EI(xj~E*l@p#*6Q&j*s2DI^OoKk^gQ#{dWTD?*A5d zmLA)*e%i6Qd&I@Bug~ASe*JiHzxwgde`wT8ExNba6SIfwMQ22 zzxK#yeh_8t{`#(KkL>&QwMRZ5(Hz6G?^>3tS^d7cXiE`bB+A4FCWD000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000@c*%QH}G*)b^iEAV5K}s#iyz$1yL$e3FX1EvKpXZfr^pxQ1M}# zrqd=%nuH{UpsrR$DT-Qm5sIP~%4(N|wJJ(gWGg7fN9uD?bmPjpRamLwu2E6{=gghy z+)UEubSC5P_4@Do{d%D@)0^CHKIhzf&pmVJ4gdfE0000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000000000000000000000000000000000000000PuguWBw2R%}00k zt|%V8Vqoy-fsPeNUtCykq?Z2j98=g7|oT zd6~BG|1IIQTgtE3dfY?X{#Xzr1JVVD~_w zaAmyL-&toYI;O$smUy@1m}uhH5(Nyx+Y))HOX{*R+Fgyr5;~ zjTdZ9tZUo5*I%&c>AAWFdK=EF_h&afCbUCqcc^8La!&E}b>Vq@d`v=JT`Ss`7YkWk zSC;ZB_6&9{>nbjt-P^ysy{GH7?SoytJ-b!c&!76|=f=ABddAqg<~}3K?bw96VpiLp zS3p{`|J-Nl~v6~#)w@9G&W_V*MA8>#EjwwKI~ zbshK2v2}HZ=P|RCc8pogm|4whpxCjpziaTaM(TQO+pms{b$zX-uEHTVUJx@oKB2C- zEw<&_aYeDCGxVx~6$ACxb;YtzJP_+zddS$i)`sUXvy{4GR@=V5en(vm?<9iPee0Gt z#r@)=HFZ@odqF~7F{@RFRP$=<@4BRYuy|JSvhxPQmfBYA@7nDxp})B9Gk=wP9`|3v z;qRaItZY9~sH5Na^bVd?}wc~KEmiV|Op{}K&-HQE%9d(7gPF@yv6^+z%$JrlxX>DF>4$EpAPRy$% z^!craSNqpg=JlJyvbWVc@drouu{X@^r@`~+Oc|AT(>Gyr%XV>NG z8k5(;u(uC?*UA-3b}O|XzOy(t=CvvO-Wlb*wmv7TEnnlV>WWz{IwGrUX813b6Z&IE zI2MhoYO4F+Nk?RP&U{X_*7$f%LftXT?MGDeJZnm}*ROnR?+MOJrp?N>*OWYCmaAt~ z>sq*S$=?+_1{*5x-s5hcw?`cR&&u{AmAcl=%Jy+7`;nN{%;%2Dt2EGPqz!-k$hYS_ zc7nX-hV{hEQu2yfZOYX(ud6@A)!TpB!omKop5=Ab^~~@6>5PMFjt5)9I<~ijZ7{K} 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 ztB+q=a>tq7Pk3psWlwJVZsDcpSKoBR|JCnN(e3iW&vs0F=l-9+d)uiKu6e!RZ~rvx z>+V0Dy6^C_?wZy9(BHp(+ItOvFAzURywZwsNuM(Q`Nuo z@nJz6f5&q&)+2wyYSyFYPyU_Oqg%$YdsD)#-t7-bBo+ez000000000000000008hW zx6W>fM9t#P^`T4r=7yrsZ3X}Uz<-6M8zd6#TIKevK>m9*eE;9Zc0l9a*~<0-0095d z-~YGv{h#>z|Aw{$RxkXX$UEQhdqDsI@ZX|UhYo%R5C8xG00000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000002US;eBx^~c@Vw!VBobA4zT;J{+>NPh1`RClwF#j%D z(}j7}M0L7G{rsqFU)8og%sWgMx|%N4MaMkZwto5T9QuPqrIaT@=>qwQEK;ybj9?^A9nce{pH@>8L!^d--QW8pelt6pk%T ze!lgDCFwXjMdL!95Pw*9i09UQN|SS<`4;X`+EAXJCcRD}Mwk1FZJ1x;g{q=3uQ2WH-%pKSCtknM4|N)r6%BtfZB#NnJ}tehn|h??7wY~xsux~g zJ7rXI=H}7*#M4ZThC_eCl+^ecV@i|h>04#YuVI>?+ueUjkKZb)8;a7gw25B-@`lo6 zI@Uy-^YA)!1=~(oGHBL{`3GT{>E(pFmA8*iwuy(=i~DUd#wVKCw)P!Ynk?IPMZVvR z)+;@O+paH7&YLo-A%E#yJvKg7zhR(N+(o8Ee~2M#{$YOU_D|<1Q7W|DAo?)Ti5i$nz_&UjhIC0Qj%gszZl_Go%0j000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000K&~nlb*?||#=&lu5A{?Utd%Vr#LQp4+$ z5-FqN{<%@NPSlM|Y*Sx5eSEUr!0Mu~UawsV){ivO_$#?o*na6V119kJ5(n^fc*p3ONdKbXhv$i;}4P z(4AV>r(gf0duhY`5-(I0g?WW(Z~uO3{5tXag?^|L#)sigrj1Ib$ET&2byJVj{6gJd zNA<$%Yp0A#wu|CQ#M4ZThC_eCl+^ecV@i|h>Dy$?uVI>?+ueUjkKZb)8;a7gw2EH; z@`lo6I@Uy-^YA)!1-nmMGHBL{`3GT{>E(pFmA8*iwu*<>i~FrI#wVKCw)P!Ynk?IW zMZVvR)+^C2HQjC3mnP>;8P$-#bgmv7pQ^unLGi+-MdcyhV`i_2H$9(popjlOg`{adBmfA@^`4>4rTKg=)P{^=Zq{D=7Ko=t5d>Gp4x(f(ojbpAu#(1rF7ZMg6G zE84$RRz5>{s2g5?5!Dalzq4(^bfd6W(I&?@lLka)@000000Q`S; z>?g#o>I?w*otKz5D%1gyC>=r;gK-(N(8)k?7Os?%!Nq;bkcyB+UdRkZ9nHd&2q6gp zL#PnQLTSyL_=hwEBH~ULGGI|6x-g4ELtQv%1qG8k;9`2dd+%{xA40R~CjNfmaLzs7 zcmCXS?ptI40000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000000000000000000003^*k*_DKC*JH&09#_Tv3be5`%Hs3Rxh@%;U<#WKgUyw=;( z&3uu2KIKLG^}~zh?4Oo*jc@ zHyqFJbath=`{D6FJU(AP$M~~tZnSg!ty2qS%$NH}&Po<{QcP-x*$`(~K?JZzW3Hf862B@s0cMjC?QAAGy)Kk@6#c=gj7+&QAuPtga9L zrV0Q60N|F^nV2a2g%kh)000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000xLHTOo~)jDvs)E^ z81%j=iefsI;rK*)zLauiQ$3eTac#01AIaPG?$&B>d28K2mdfs;G2hmUZT(_fzce&< zuATpZR3A#^_H*4T=8k|bvBfgSv%J>Z)6IO5dp_kw`}M<%E8K&)3f}{%o5Y?HqsW)Iu5a z<-QM=`sI!<7s@lIn)}}QPQQ*HTWZek?)3cg-DRDPbB^5g_V8o=I`&!9x4-xW>3ur+ z{`U;se~cZO|KOF?^?d)G9DDHccd@V4kDG5K-+yO#jZQPRXup*xasP3LGsidXzccc^ zM1SN)`$o!-_?0001PX`P9Q!e2-M00000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000DzlyH$_oQr!pLm=SwMPHr0nxDXvXc<0E;y-rZUa zE^n>-$5Po{H0IlSv8`Wh>z9Vc-rLUqK&oSn+s}2Ym^=0r<iTGy8ptJ z)%DYl&DZVG`Co3=UnsU!AD&n$$DbPX;=QiEwotcYy_kP0Z)6IO5dp_kw`}M<% z<@V>7dqq3uXnKzNg~Lt!^t1gkj~^SFuO1T~y!>5`|2E}DSKiBQsr~2Wewp`Lv}Yde zD6>z$cm0_+Hs%kpW?m=izg%1@Z)=~owDoO6@nYl~95wTNzx?CV8|VFx^j<}$8TYrp z_RGH?UaZeApVbFTO@95*X-je}^~ZkqytT349Lsg?TW>cO@A$udQ*r;DeE&}m-GA(1 zWd4{h-+vCp`N#fOKW@H}eE*%H`;YPY{3AC?+<)BR%<+x;?~I&h^ha*AZ>0Q)-#N3n z%6Gr-lmC9d0ssI2xTSTrZ!Y|W6aWAKZar&v6~!GB{@)J(006%R#n{k4es%l;00000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z0000000000000000000000000000000000000000000000Qi3>0001hTS901MBy(T z0001R>sh<2DDIf>|9$`f000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000000000000000000000000000000000008(8J9ZBu)fEK*`0i}T zY)G>pqJpGaqNQ3SVzq^p7D|dYF@g|C;fTA9Y)BJ`DO3d4MI~U7CJspu69pT)qzDUQ zBt;5;u-MK;2_z7Gg2m>ZH}9@vP)U(^b;I+`1oJ{`d z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z0000000000000000000000000000000002~t1s?vtUvg!TYt81(0hNdCiZ(ZotF?Q5NyD~NC?fIo!pE!J|>ECks?xTfW`|B6Y ze>C@v-yO!s+Wp06n!1ZGN6?$BX#VM}yv-xo$H~`ZAx#Z0^l_xta6JTE^SEX^PI|oC9O2tUKCt zZXbWsub!M9^d>qfJv`a1V~m(@y3JWy?AGJ$yd|C%o{yLPpI;o_{b>DPyZ1NmQGdS8 zjpq{oetxEk@k-xMbNy=5t(oep`Qd$Ux!7;w$L5B2u_nK-p68qG!aC2+IdWIp!;kSx zEc!<8VO8Ewr`-SLk^7I@e~o|dx8;>`|D965_39t7uI1~)??}1-&gdMSVQp%^E788q zd2xq3jt@W6NKIL1^ha(yKhF6Pe|yIpb(5c+`*nF`^f#3N00000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z{$URe1ONa40D$~o8$nf7RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40RaI40 zRfWAffwQ`-_XmCuMNvzTQLzg~so?fET)LU5;l5llLj-XN5Jp7@7>7YYNpZ<7GgREV znwn^7{u6_`R#aG~S(>z%R%Tea{7Xx3c8;a#|NG4O{bnA1O?Rq$|Nrjte*1cQexLI! zzvs7{Gv~}1UI73A00000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z000000000000000000000000000000!2dVf+%Uf}=Inlr6OSC;DDze4^lPj$shQWx z`VRcq{Kk5x*BYbNuGLPwe$U3$XYcdLKi)FGu}-x0i!%K?&9;`U`!yc>*q)6IZ`iXj ze&td1!=h{y?JGaJXXAn!=QnmP=DYW8XEZK4V0hO&8(-Qpc66HWigg>S&bnpdCTUGk zw)+0O`X_&IdgFzd>$}%zPb0?&>G{?%=&!;~&vpcUB{qDGU=7iMe*#~Z(nCg2DIA+3>nV;G4 zU!op1rhl!r)3WE&<7w>OQEtC*de`_tqk692w_cv#wa&Di+D`oHQT0JHPH((3`j(H^ zHrlh69v^q!@J5%I7Ut!2b>!y5NK)ckq6`hZOvtH(w;V$;UIciz|jj>q(0O?p2w`l#l6vh?0@ z=?3wBF5dTzS$6-r{}J==cFz`#RJM9st+r*9rLmvq%Ig#FLsvyvt9ak~Kiz}>$=+LD z{JT@Hy7f)XdnA8+biB7u@8kcbNmu^pceOzaYqj*DX^?Bqzu#Je2GxEE0000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000000000000000000000000000000000000000000000000 z00000000000000000000002-}_{^}zxKFIxm@;X}#9!8GwU#Kowa+WscZ<@$>=z}q zFO4!Lwg-)h|5-h(v0l;d=vvdx%QtH*S+-f%5G_(mn^?yl!K+tbOTLOS;?Bt}XtkBQQ?ze}c1xZuMxCfs*@bNu%%p5E1- z)^^yO853T5=%jk;m-e-Jw52|aV(ygFdhU3~j0tI9hwVJ0>+y0-c}~+gO6Os#mrtsn z7?1Bas(+*0e&ru$bj??L=;n!Ot~B=3Bb)90isMUl>XX`2e&PIC6Uz2d_rAiSC`*g$ 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≥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

Ql$VA@@>3jRcJ_NbjoDVsLAI_oe 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 z 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 Dtct{X diff --git a/tests/qtest/bios-tables-test-allowed-diff.h.orig b/tests/qtest/bios-tables-test-allowed-diff.h.orig deleted file mode 100644 index 6a052c50447..00000000000 --- a/tests/qtest/bios-tables-test-allowed-diff.h.orig +++ /dev/null @@ -1,18 +0,0 @@ -/* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/pc/DSDT", -"tests/data/acpi/pc/DSDT.acpihmat", -"tests/data/acpi/pc/DSDT.bridge", -"tests/data/acpi/pc/DSDT.cphp", -"tests/data/acpi/pc/DSDT.dimmpxm", -"tests/data/acpi/pc/DSDT.ipmikcs", -"tests/data/acpi/pc/DSDT.memhp", -"tests/data/acpi/pc/DSDT.numamem", -"tests/data/acpi/q35/DSDT", -"tests/data/acpi/q35/DSDT.acpihmat", -"tests/data/acpi/q35/DSDT.bridge", -"tests/data/acpi/q35/DSDT.cphp", -"tests/data/acpi/q35/DSDT.dimmpxm", -"tests/data/acpi/q35/DSDT.ipmibt", -"tests/data/acpi/q35/DSDT.memhp", -"tests/data/acpi/q35/DSDT.mmio64", -"tests/data/acpi/q35/DSDT.numamem", diff --git a/tests/qtest/bios-tables-test-allowed-diff.h.rej b/tests/qtest/bios-tables-test-allowed-diff.h.rej deleted file mode 100644 index 31b3352111a..00000000000 --- a/tests/qtest/bios-tables-test-allowed-diff.h.rej +++ /dev/null @@ -1,9 +0,0 @@ ---- tests/qtest/bios-tables-test-allowed-diff.h -+++ tests/qtest/bios-tables-test-allowed-diff.h -@@ -1,6 +1 @@ - /* List of comma-separated changed AML files to ignore */ --"tests/data/acpi/pc/SSDT.dimmpxm", --"tests/data/acpi/q35/SSDT.dimmpxm", --"tests/data/acpi/virt/DSDT.memhp", --"tests/data/acpi/virt/SSDT.memhp", --"tests/data/acpi/virt/NFIT.memhp", diff --git a/tests/qtest/bios-tables-test.c.orig b/tests/qtest/bios-tables-test.c.orig deleted file mode 100644 index a0b8d816590..00000000000 --- a/tests/qtest/bios-tables-test.c.orig +++ /dev/null @@ -1,1200 +0,0 @@ -/* - * Boot order test cases. - * - * Copyright (c) 2013 Red Hat Inc. - * - * Authors: - * Michael S. Tsirkin , - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -/* - * How to add or update the tests: - * Contributor: - * 1. add empty files for new tables, if any, under tests/data/acpi - * 2. list any changed files in tests/qtest/bios-tables-test-allowed-diff.h - * 3. commit the above *before* making changes that affect the tables - * - * Contributor or ACPI Maintainer (steps 4-7 need to be redone to resolve conflicts - * in binary commit created in step 6): - * - * After 1-3 above tests will pass but ignore differences with the expected files. - * You will also notice that tests/qtest/bios-tables-test-allowed-diff.h lists - * a bunch of files. This is your hint that you need to do the below: - * 4. Run - * make check V=1 - * this will produce a bunch of warnings about differences - * beween actual and expected ACPI tables. If you have IASL installed, - * they will also be disassembled so you can look at the disassembled - * output. If not - disassemble them yourself in any way you like. - * Look at the differences - make sure they make sense and match what the - * changes you are merging are supposed to do. - * Save the changes, preferably in form of ASL diff for the commit log in - * step 6. - * - * 5. From build directory, run: - * $(SRC_PATH)/tests/data/acpi/rebuild-expected-aml.sh - * 6. Now commit any changes to the expected binary, include diff from step 4 - * in commit log. - * 7. Before sending patches to the list (Contributor) - * or before doing a pull request (Maintainer), make sure - * tests/qtest/bios-tables-test-allowed-diff.h is empty - this will ensure - * following changes to ACPI tables will be noticed. - * - * The resulting patchset/pull request then looks like this: - * - patch 1: list changed files in tests/qtest/bios-tables-test-allowed-diff.h. - * - patches 2 - n: real changes, may contain multiple patches. - * - patch n + 1: update golden master binaries and empty - * tests/qtest/bios-tables-test-allowed-diff.h - */ - -#include "qemu/osdep.h" -#include -#include "qemu-common.h" -#include "hw/firmware/smbios.h" -#include "qemu/bitmap.h" -#include "acpi-utils.h" -#include "boot-sector.h" -#include "tpm-emu.h" -#include "hw/acpi/tpm.h" - - -#define MACHINE_PC "pc" -#define MACHINE_Q35 "q35" - -#define ACPI_REBUILD_EXPECTED_AML "TEST_ACPI_REBUILD_AML" - -typedef struct { - bool tcg_only; - const char *machine; - const char *variant; - const char *uefi_fl1; - const char *uefi_fl2; - const char *cd; - const uint64_t ram_start; - const uint64_t scan_len; - uint64_t rsdp_addr; - uint8_t rsdp_table[36 /* ACPI 2.0+ RSDP size */]; - GArray *tables; - uint32_t smbios_ep_addr; - struct smbios_21_entry_point smbios_ep_table; - uint16_t smbios_cpu_max_speed; - uint16_t smbios_cpu_curr_speed; - uint8_t *required_struct_types; - int required_struct_types_len; - QTestState *qts; -} test_data; - -static char disk[] = "tests/acpi-test-disk-XXXXXX"; -static const char *data_dir = "tests/data/acpi"; -#ifdef CONFIG_IASL -static const char *iasl = CONFIG_IASL; -#else -static const char *iasl; -#endif - -static bool compare_signature(const AcpiSdtTable *sdt, const char *signature) -{ - return !memcmp(sdt->aml, signature, 4); -} - -static void cleanup_table_descriptor(AcpiSdtTable *table) -{ - g_free(table->aml); - if (table->aml_file && - !table->tmp_files_retain && - g_strstr_len(table->aml_file, -1, "aml-")) { - unlink(table->aml_file); - } - g_free(table->aml_file); - g_free(table->asl); - if (table->asl_file && - !table->tmp_files_retain) { - unlink(table->asl_file); - } - g_free(table->asl_file); -} - -static void free_test_data(test_data *data) -{ - int i; - - for (i = 0; i < data->tables->len; ++i) { - cleanup_table_descriptor(&g_array_index(data->tables, AcpiSdtTable, i)); - } - - g_array_free(data->tables, true); -} - -static void test_acpi_rsdp_table(test_data *data) -{ - uint8_t *rsdp_table = data->rsdp_table; - - acpi_fetch_rsdp_table(data->qts, data->rsdp_addr, rsdp_table); - - switch (rsdp_table[15 /* Revision offset */]) { - case 0: /* ACPI 1.0 RSDP */ - /* With rev 1, checksum is only for the first 20 bytes */ - g_assert(!acpi_calc_checksum(rsdp_table, 20)); - break; - case 2: /* ACPI 2.0+ RSDP */ - /* With revision 2, we have 2 checksums */ - g_assert(!acpi_calc_checksum(rsdp_table, 20)); - g_assert(!acpi_calc_checksum(rsdp_table, 36)); - break; - default: - g_assert_not_reached(); - } -} - -static void test_acpi_rxsdt_table(test_data *data) -{ - const char *sig = "RSDT"; - AcpiSdtTable rsdt = {}; - int entry_size = 4; - int addr_off = 16 /* RsdtAddress */; - uint8_t *ent; - - if (data->rsdp_table[15 /* Revision offset */] != 0) { - addr_off = 24 /* XsdtAddress */; - entry_size = 8; - sig = "XSDT"; - } - /* read [RX]SDT table */ - acpi_fetch_table(data->qts, &rsdt.aml, &rsdt.aml_len, - &data->rsdp_table[addr_off], entry_size, sig, true); - - /* Load all tables and add to test list directly RSDT referenced tables */ - ACPI_FOREACH_RSDT_ENTRY(rsdt.aml, rsdt.aml_len, ent, entry_size) { - AcpiSdtTable ssdt_table = {}; - - acpi_fetch_table(data->qts, &ssdt_table.aml, &ssdt_table.aml_len, ent, - entry_size, NULL, true); - /* Add table to ASL test tables list */ - g_array_append_val(data->tables, ssdt_table); - } - cleanup_table_descriptor(&rsdt); -} - -static void test_acpi_fadt_table(test_data *data) -{ - /* FADT table is 1st */ - AcpiSdtTable table = g_array_index(data->tables, typeof(table), 0); - uint8_t *fadt_aml = table.aml; - uint32_t fadt_len = table.aml_len; - uint32_t val; - int dsdt_offset = 40 /* DSDT */; - int dsdt_entry_size = 4; - - g_assert(compare_signature(&table, "FACP")); - - /* Since DSDT/FACS isn't in RSDT, add them to ASL test list manually */ - memcpy(&val, fadt_aml + 112 /* Flags */, 4); - val = le32_to_cpu(val); - if (!(val & 1UL << 20 /* HW_REDUCED_ACPI */)) { - acpi_fetch_table(data->qts, &table.aml, &table.aml_len, - fadt_aml + 36 /* FIRMWARE_CTRL */, 4, "FACS", false); - g_array_append_val(data->tables, table); - } - - memcpy(&val, fadt_aml + dsdt_offset, 4); - val = le32_to_cpu(val); - if (!val) { - dsdt_offset = 140 /* X_DSDT */; - dsdt_entry_size = 8; - } - acpi_fetch_table(data->qts, &table.aml, &table.aml_len, - fadt_aml + dsdt_offset, dsdt_entry_size, "DSDT", true); - g_array_append_val(data->tables, table); - - memset(fadt_aml + 36, 0, 4); /* sanitize FIRMWARE_CTRL ptr */ - memset(fadt_aml + 40, 0, 4); /* sanitize DSDT ptr */ - if (fadt_aml[8 /* FADT Major Version */] >= 3) { - memset(fadt_aml + 132, 0, 8); /* sanitize X_FIRMWARE_CTRL ptr */ - memset(fadt_aml + 140, 0, 8); /* sanitize X_DSDT ptr */ - } - - /* update checksum */ - fadt_aml[9 /* Checksum */] = 0; - fadt_aml[9 /* Checksum */] -= acpi_calc_checksum(fadt_aml, fadt_len); -} - -static void dump_aml_files(test_data *data, bool rebuild) -{ - AcpiSdtTable *sdt; - GError *error = NULL; - gchar *aml_file = NULL; - gint fd; - ssize_t ret; - int i; - - for (i = 0; i < data->tables->len; ++i) { - const char *ext = data->variant ? data->variant : ""; - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - g_assert(sdt->aml); - - if (rebuild) { - aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine, - sdt->aml, ext); - fd = g_open(aml_file, O_WRONLY|O_TRUNC|O_CREAT, - S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH); - if (fd < 0) { - perror(aml_file); - } - g_assert(fd >= 0); - } else { - fd = g_file_open_tmp("aml-XXXXXX", &sdt->aml_file, &error); - g_assert_no_error(error); - } - - ret = qemu_write_full(fd, sdt->aml, sdt->aml_len); - g_assert(ret == sdt->aml_len); - - close(fd); - - g_free(aml_file); - } -} - -static bool load_asl(GArray *sdts, AcpiSdtTable *sdt) -{ - AcpiSdtTable *temp; - GError *error = NULL; - GString *command_line = g_string_new(iasl); - gint fd; - gchar *out, *out_err; - gboolean ret; - int i; - - fd = g_file_open_tmp("asl-XXXXXX.dsl", &sdt->asl_file, &error); - g_assert_no_error(error); - close(fd); - - /* build command line */ - g_string_append_printf(command_line, " -p %s ", sdt->asl_file); - if (compare_signature(sdt, "DSDT") || - compare_signature(sdt, "SSDT")) { - for (i = 0; i < sdts->len; ++i) { - temp = &g_array_index(sdts, AcpiSdtTable, i); - if (compare_signature(temp, "DSDT") || - compare_signature(temp, "SSDT")) { - g_string_append_printf(command_line, "-e %s ", temp->aml_file); - } - } - } - g_string_append_printf(command_line, "-d %s", sdt->aml_file); - - /* pass 'out' and 'out_err' in order to be redirected */ - ret = g_spawn_command_line_sync(command_line->str, &out, &out_err, NULL, &error); - g_assert_no_error(error); - if (ret) { - ret = g_file_get_contents(sdt->asl_file, &sdt->asl, - &sdt->asl_len, &error); - g_assert(ret); - g_assert_no_error(error); - ret = (sdt->asl_len > 0); - } - - g_free(out); - g_free(out_err); - g_string_free(command_line, true); - - return !ret; -} - -#define COMMENT_END "*/" -#define DEF_BLOCK "DefinitionBlock (" -#define BLOCK_NAME_END "," - -static GString *normalize_asl(gchar *asl_code) -{ - GString *asl = g_string_new(asl_code); - gchar *comment, *block_name; - - /* strip comments (different generation days) */ - comment = g_strstr_len(asl->str, asl->len, COMMENT_END); - if (comment) { - comment += strlen(COMMENT_END); - while (*comment == '\n') { - comment++; - } - asl = g_string_erase(asl, 0, comment - asl->str); - } - - /* strip def block name (it has file path in it) */ - if (g_str_has_prefix(asl->str, DEF_BLOCK)) { - block_name = g_strstr_len(asl->str, asl->len, BLOCK_NAME_END); - g_assert(block_name); - asl = g_string_erase(asl, 0, - block_name + sizeof(BLOCK_NAME_END) - asl->str); - } - - return asl; -} - -static GArray *load_expected_aml(test_data *data) -{ - int i; - AcpiSdtTable *sdt; - GError *error = NULL; - gboolean ret; - gsize aml_len; - - GArray *exp_tables = g_array_new(false, true, sizeof(AcpiSdtTable)); - if (getenv("V")) { - fputc('\n', stderr); - } - for (i = 0; i < data->tables->len; ++i) { - AcpiSdtTable exp_sdt; - gchar *aml_file = NULL; - const char *ext = data->variant ? data->variant : ""; - - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - - memset(&exp_sdt, 0, sizeof(exp_sdt)); - -try_again: - aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine, - sdt->aml, ext); - if (getenv("V")) { - fprintf(stderr, "Looking for expected file '%s'\n", aml_file); - } - if (g_file_test(aml_file, G_FILE_TEST_EXISTS)) { - exp_sdt.aml_file = aml_file; - } else if (*ext != '\0') { - /* try fallback to generic (extension less) expected file */ - ext = ""; - g_free(aml_file); - goto try_again; - } - g_assert(exp_sdt.aml_file); - if (getenv("V")) { - fprintf(stderr, "Using expected file '%s'\n", aml_file); - } - ret = g_file_get_contents(aml_file, (gchar **)&exp_sdt.aml, - &aml_len, &error); - exp_sdt.aml_len = aml_len; - g_assert(ret); - g_assert_no_error(error); - g_assert(exp_sdt.aml); - if (!exp_sdt.aml_len) { - fprintf(stderr, "Warning! zero length expected file '%s'\n", - aml_file); - } - - g_array_append_val(exp_tables, exp_sdt); - } - - return exp_tables; -} - -static bool test_acpi_find_diff_allowed(AcpiSdtTable *sdt) -{ - const gchar *allowed_diff_file[] = { -#include "bios-tables-test-allowed-diff.h" - NULL - }; - const gchar **f; - - for (f = allowed_diff_file; *f; ++f) { - if (!g_strcmp0(sdt->aml_file, *f)) { - return true; - } - } - return false; -} - -/* test the list of tables in @data->tables against reference tables */ -static void test_acpi_asl(test_data *data) -{ - int i; - AcpiSdtTable *sdt, *exp_sdt; - test_data exp_data; - gboolean exp_err, err, all_tables_match = true; - - memset(&exp_data, 0, sizeof(exp_data)); - exp_data.tables = load_expected_aml(data); - dump_aml_files(data, false); - for (i = 0; i < data->tables->len; ++i) { - GString *asl, *exp_asl; - - sdt = &g_array_index(data->tables, AcpiSdtTable, i); - exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i); - - if (sdt->aml_len == exp_sdt->aml_len && - !memcmp(sdt->aml, exp_sdt->aml, sdt->aml_len)) { - /* Identical table binaries: no need to disassemble. */ - continue; - } - - fprintf(stderr, - "acpi-test: Warning! %.4s binary file mismatch. " - "Actual [aml:%s], Expected [aml:%s].\n" - "See source file tests/qtest/bios-tables-test.c " - "for instructions on how to update expected files.\n", - exp_sdt->aml, sdt->aml_file, exp_sdt->aml_file); - - all_tables_match = all_tables_match && - test_acpi_find_diff_allowed(exp_sdt); - - /* - * don't try to decompile if IASL isn't present, in this case user - * will just 'get binary file mismatch' warnings and test failure - */ - if (!iasl) { - continue; - } - - err = load_asl(data->tables, sdt); - asl = normalize_asl(sdt->asl); - - exp_err = load_asl(exp_data.tables, exp_sdt); - exp_asl = normalize_asl(exp_sdt->asl); - - /* TODO: check for warnings */ - g_assert(!err || exp_err); - - if (g_strcmp0(asl->str, exp_asl->str)) { - sdt->tmp_files_retain = true; - if (exp_err) { - fprintf(stderr, - "Warning! iasl couldn't parse the expected aml\n"); - } else { - exp_sdt->tmp_files_retain = true; - fprintf(stderr, - "acpi-test: Warning! %.4s mismatch. " - "Actual [asl:%s, aml:%s], Expected [asl:%s, aml:%s].\n", - exp_sdt->aml, sdt->asl_file, sdt->aml_file, - exp_sdt->asl_file, exp_sdt->aml_file); - fflush(stderr); - if (getenv("V")) { - const char *diff_env = getenv("DIFF"); - const char *diff_cmd = diff_env ? diff_env : "diff -U 16"; - char *diff = g_strdup_printf("%s %s %s", diff_cmd, - exp_sdt->asl_file, sdt->asl_file); - int out = dup(STDOUT_FILENO); - int ret G_GNUC_UNUSED; - - dup2(STDERR_FILENO, STDOUT_FILENO); - ret = system(diff) ; - dup2(out, STDOUT_FILENO); - close(out); - g_free(diff); - } - } - } - g_string_free(asl, true); - g_string_free(exp_asl, true); - } - if (!iasl && !all_tables_match) { - fprintf(stderr, "to see ASL diff between mismatched files install IASL," - " rebuild QEMU from scratch and re-run tests with V=1" - " environment variable set"); - } - g_assert(all_tables_match); - - free_test_data(&exp_data); -} - -static bool smbios_ep_table_ok(test_data *data) -{ - struct smbios_21_entry_point *ep_table = &data->smbios_ep_table; - uint32_t addr = data->smbios_ep_addr; - - qtest_memread(data->qts, addr, ep_table, sizeof(*ep_table)); - if (memcmp(ep_table->anchor_string, "_SM_", 4)) { - return false; - } - if (memcmp(ep_table->intermediate_anchor_string, "_DMI_", 5)) { - return false; - } - if (ep_table->structure_table_length == 0) { - return false; - } - if (ep_table->number_of_structures == 0) { - return false; - } - if (acpi_calc_checksum((uint8_t *)ep_table, sizeof *ep_table) || - acpi_calc_checksum((uint8_t *)ep_table + 0x10, - sizeof *ep_table - 0x10)) { - return false; - } - return true; -} - -static void test_smbios_entry_point(test_data *data) -{ - uint32_t off; - - /* find smbios entry point structure */ - for (off = 0xf0000; off < 0x100000; off += 0x10) { - uint8_t sig[] = "_SM_"; - int i; - - for (i = 0; i < sizeof sig - 1; ++i) { - sig[i] = qtest_readb(data->qts, off + i); - } - - if (!memcmp(sig, "_SM_", sizeof sig)) { - /* signature match, but is this a valid entry point? */ - data->smbios_ep_addr = off; - if (smbios_ep_table_ok(data)) { - break; - } - } - } - - g_assert_cmphex(off, <, 0x100000); -} - -static inline bool smbios_single_instance(uint8_t type) -{ - switch (type) { - case 0: - case 1: - case 2: - case 3: - case 16: - case 32: - case 127: - return true; - default: - return false; - } -} - -static bool smbios_cpu_test(test_data *data, uint32_t addr) -{ - uint16_t expect_speed[2]; - uint16_t real; - int offset[2]; - int i; - - /* Check CPU speed for backward compatibility */ - offset[0] = offsetof(struct smbios_type_4, max_speed); - offset[1] = offsetof(struct smbios_type_4, current_speed); - expect_speed[0] = data->smbios_cpu_max_speed ? : 2000; - expect_speed[1] = data->smbios_cpu_curr_speed ? : 2000; - - for (i = 0; i < 2; i++) { - real = qtest_readw(data->qts, addr + offset[i]); - if (real != expect_speed[i]) { - fprintf(stderr, "Unexpected SMBIOS CPU speed: real %u expect %u\n", - real, expect_speed[i]); - return false; - } - } - - return true; -} - -static void test_smbios_structs(test_data *data) -{ - DECLARE_BITMAP(struct_bitmap, SMBIOS_MAX_TYPE+1) = { 0 }; - struct smbios_21_entry_point *ep_table = &data->smbios_ep_table; - uint32_t addr = le32_to_cpu(ep_table->structure_table_address); - int i, len, max_len = 0; - uint8_t type, prv, crt; - - /* walk the smbios tables */ - for (i = 0; i < le16_to_cpu(ep_table->number_of_structures); i++) { - - /* grab type and formatted area length from struct header */ - type = qtest_readb(data->qts, addr); - g_assert_cmpuint(type, <=, SMBIOS_MAX_TYPE); - len = qtest_readb(data->qts, addr + 1); - - /* single-instance structs must not have been encountered before */ - if (smbios_single_instance(type)) { - g_assert(!test_bit(type, struct_bitmap)); - } - set_bit(type, struct_bitmap); - - if (type == 4) { - g_assert(smbios_cpu_test(data, addr)); - } - - /* seek to end of unformatted string area of this struct ("\0\0") */ - prv = crt = 1; - while (prv || crt) { - prv = crt; - crt = qtest_readb(data->qts, addr + len); - len++; - } - - /* keep track of max. struct size */ - if (max_len < len) { - max_len = len; - g_assert_cmpuint(max_len, <=, ep_table->max_structure_size); - } - - /* start of next structure */ - addr += len; - } - - /* total table length and max struct size must match entry point values */ - g_assert_cmpuint(le16_to_cpu(ep_table->structure_table_length), ==, - addr - le32_to_cpu(ep_table->structure_table_address)); - g_assert_cmpuint(le16_to_cpu(ep_table->max_structure_size), ==, max_len); - - /* required struct types must all be present */ - for (i = 0; i < data->required_struct_types_len; i++) { - g_assert(test_bit(data->required_struct_types[i], struct_bitmap)); - } -} - -static void test_acpi_one(const char *params, test_data *data) -{ - char *args; - bool use_uefi = data->uefi_fl1 && data->uefi_fl2; - - if (use_uefi) { - /* - * TODO: convert '-drive if=pflash' to new syntax (see e33763be7cd3) - * when arm/virt boad starts to support it. - */ - args = g_strdup_printf("-machine %s %s -accel tcg -nodefaults -nographic " - "-drive if=pflash,format=raw,file=%s,readonly " - "-drive if=pflash,format=raw,file=%s,snapshot=on -cdrom %s %s", - data->machine, data->tcg_only ? "" : "-accel kvm", - data->uefi_fl1, data->uefi_fl2, data->cd, params ? params : ""); - - } else { - /* Disable kernel irqchip to be able to override apic irq0. */ - args = g_strdup_printf("-machine %s,kernel-irqchip=off %s -accel tcg " - "-net none -display none %s " - "-drive id=hd0,if=none,file=%s,format=raw " - "-device ide-hd,drive=hd0 ", - data->machine, data->tcg_only ? "" : "-accel kvm", - params ? params : "", disk); - } - - data->qts = qtest_init(args); - - if (use_uefi) { - g_assert(data->scan_len); - data->rsdp_addr = acpi_find_rsdp_address_uefi(data->qts, - data->ram_start, data->scan_len); - } else { - boot_sector_test(data->qts); - data->rsdp_addr = acpi_find_rsdp_address(data->qts); - g_assert_cmphex(data->rsdp_addr, <, 0x100000); - } - - data->tables = g_array_new(false, true, sizeof(AcpiSdtTable)); - test_acpi_rsdp_table(data); - test_acpi_rxsdt_table(data); - test_acpi_fadt_table(data); - - if (getenv(ACPI_REBUILD_EXPECTED_AML)) { - dump_aml_files(data, true); - } else { - test_acpi_asl(data); - } - - /* - * TODO: make SMBIOS tests work with UEFI firmware, - * Bug on uefi-test-tools to provide entry point: - * https://bugs.launchpad.net/qemu/+bug/1821884 - */ - if (!use_uefi) { - test_smbios_entry_point(data); - test_smbios_structs(data); - } - - qtest_quit(data->qts); - g_free(args); -} - -static uint8_t base_required_struct_types[] = { - 0, 1, 3, 4, 16, 17, 19, 32, 127 -}; - -static void test_acpi_piix4_tcg(void) -{ - test_data data; - - /* Supplying -machine accel argument overrides the default (qtest). - * This is to make guest actually run. - */ - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one(NULL, &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_bridge(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".bridge"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-device pci-bridge,chassis_nr=1", &data); - free_test_data(&data); -} - -<<<<<<< HEAD -static void test_acpi_piix4_bridge_hotplug(void) -======= -static void test_acpi_piix4_root_hotplug(void) ->>>>>>> tests/acpi: add a new unit test to test hotplug off/on feature on the root pci bus -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; -<<<<<<< HEAD - data.variant = ".hpbridge"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-global PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off " - "-device pci-bridge,chassis_nr=1", &data); -======= - data.variant = ".roothp"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-global PIIX4_PM.acpi-root-pci-hotplug=off", &data); ->>>>>>> tests/acpi: add a new unit test to test hotplug off/on feature on the root pci bus - free_test_data(&data); -} - -static void test_acpi_q35_tcg(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one(NULL, &data); - free_test_data(&data); - - data.smbios_cpu_max_speed = 3000; - data.smbios_cpu_curr_speed = 2600; - test_acpi_one("-smbios type=4,max-speed=3000,current-speed=2600", &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_bridge(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".bridge"; - data.required_struct_types = base_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types); - test_acpi_one("-device pci-bridge,chassis_nr=1", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_mmio64(void) -{ - test_data data = { - .machine = MACHINE_Q35, - .variant = ".mmio64", - .required_struct_types = base_required_struct_types, - .required_struct_types_len = ARRAY_SIZE(base_required_struct_types) - }; - - test_acpi_one("-m 128M,slots=1,maxmem=2G " - "-object memory-backend-ram,id=ram0,size=128M " - "-numa node,memdev=ram0 " - "-device pci-testdev,membar=2G", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_cphp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".cphp"; - test_acpi_one("-smp 2,cores=3,sockets=2,maxcpus=6" - " -object memory-backend-ram,id=ram0,size=64M" - " -object memory-backend-ram,id=ram1,size=64M" - " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_cphp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".cphp"; - test_acpi_one(" -smp 2,cores=3,sockets=2,maxcpus=6" - " -object memory-backend-ram,id=ram0,size=64M" - " -object memory-backend-ram,id=ram1,size=64M" - " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static uint8_t ipmi_required_struct_types[] = { - 0, 1, 3, 4, 16, 17, 19, 32, 38, 127 -}; - -static void test_acpi_q35_tcg_ipmi(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".ipmibt"; - data.required_struct_types = ipmi_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types); - test_acpi_one("-device ipmi-bmc-sim,id=bmc0" - " -device isa-ipmi-bt,bmc=bmc0", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_ipmi(void) -{ - test_data data; - - /* Supplying -machine accel argument overrides the default (qtest). - * This is to make guest actually run. - */ - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".ipmikcs"; - data.required_struct_types = ipmi_required_struct_types; - data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types); - test_acpi_one("-device ipmi-bmc-sim,id=bmc0" - " -device isa-ipmi-kcs,irq=0,bmc=bmc0", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_memhp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".memhp"; - test_acpi_one(" -m 128,slots=3,maxmem=1G" - " -object memory-backend-ram,id=ram0,size=64M" - " -object memory-backend-ram,id=ram1,size=64M" - " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_memhp(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".memhp"; - test_acpi_one(" -m 128,slots=3,maxmem=1G" - " -object memory-backend-ram,id=ram0,size=64M" - " -object memory-backend-ram,id=ram1,size=64M" - " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_numamem(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_Q35; - data.variant = ".numamem"; - test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M" - " -numa node -numa node,memdev=ram0", &data); - free_test_data(&data); -} - -static void test_acpi_piix4_tcg_numamem(void) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = MACHINE_PC; - data.variant = ".numamem"; - test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M" - " -numa node -numa node,memdev=ram0", &data); - free_test_data(&data); -} - -uint64_t tpm_tis_base_addr; - -static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if, - uint64_t base) -{ -#ifdef CONFIG_TPM - gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX", - machine, tpm_if); - char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL); - TestState test; - test_data data; - GThread *thread; - char *args, *variant = g_strdup_printf(".%s", tpm_if); - - tpm_tis_base_addr = base; - - module_call_init(MODULE_INIT_QOM); - - test.addr = g_new0(SocketAddress, 1); - test.addr->type = SOCKET_ADDRESS_TYPE_UNIX; - test.addr->u.q_unix.path = g_build_filename(tmp_path, "sock", NULL); - g_mutex_init(&test.data_mutex); - g_cond_init(&test.data_cond); - test.data_cond_signal = false; - - thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test); - tpm_emu_test_wait_cond(&test); - - memset(&data, 0, sizeof(data)); - data.machine = machine; - data.variant = variant; - - args = g_strdup_printf( - " -chardev socket,id=chr,path=%s" - " -tpmdev emulator,id=dev,chardev=chr" - " -device tpm-%s,tpmdev=dev", - test.addr->u.q_unix.path, tpm_if); - - test_acpi_one(args, &data); - - g_thread_join(thread); - g_unlink(test.addr->u.q_unix.path); - qapi_free_SocketAddress(test.addr); - g_rmdir(tmp_path); - g_free(variant); - g_free(tmp_path); - g_free(tmp_dir_name); - g_free(args); - free_test_data(&data); -#else - g_test_skip("TPM disabled"); -#endif -} - -static void test_acpi_q35_tcg_tpm_tis(void) -{ - test_acpi_tcg_tpm("q35", "tis", 0xFED40000); -} - -static void test_acpi_tcg_dimm_pxm(const char *machine) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = machine; - data.variant = ".dimmpxm"; - test_acpi_one(" -machine nvdimm=on,nvdimm-persistence=cpu" - " -smp 4,sockets=4" - " -m 128M,slots=3,maxmem=1G" - " -object memory-backend-ram,id=ram0,size=32M" - " -object memory-backend-ram,id=ram1,size=32M" - " -object memory-backend-ram,id=ram2,size=32M" - " -object memory-backend-ram,id=ram3,size=32M" - " -numa node,memdev=ram0,nodeid=0" - " -numa node,memdev=ram1,nodeid=1" - " -numa node,memdev=ram2,nodeid=2" - " -numa node,memdev=ram3,nodeid=3" - " -numa cpu,node-id=0,socket-id=0" - " -numa cpu,node-id=1,socket-id=1" - " -numa cpu,node-id=2,socket-id=2" - " -numa cpu,node-id=3,socket-id=3" - " -object memory-backend-ram,id=ram4,size=128M" - " -object memory-backend-ram,id=nvm0,size=128M" - " -device pc-dimm,id=dimm0,memdev=ram4,node=1" - " -device nvdimm,id=dimm1,memdev=nvm0,node=2", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_dimm_pxm(void) -{ - test_acpi_tcg_dimm_pxm(MACHINE_Q35); -} - -static void test_acpi_piix4_tcg_dimm_pxm(void) -{ - test_acpi_tcg_dimm_pxm(MACHINE_PC); -} - -static void test_acpi_virt_tcg_memhp(void) -{ - test_data data = { - .machine = "virt", - .tcg_only = true, - .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd", - .uefi_fl2 = "pc-bios/edk2-arm-vars.fd", - .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2", - .ram_start = 0x40000000ULL, - .scan_len = 256ULL * 1024 * 1024, - }; - - data.variant = ".memhp"; - test_acpi_one(" -machine nvdimm=on" - " -cpu cortex-a57" - " -m 256M,slots=3,maxmem=1G" - " -object memory-backend-ram,id=ram0,size=128M" - " -object memory-backend-ram,id=ram1,size=128M" - " -numa node,memdev=ram0 -numa node,memdev=ram1" - " -numa dist,src=0,dst=1,val=21" - " -object memory-backend-ram,id=ram2,size=128M" - " -object memory-backend-ram,id=nvm0,size=128M" - " -device pc-dimm,id=dimm0,memdev=ram2,node=0" - " -device nvdimm,id=dimm1,memdev=nvm0,node=1", - &data); - - free_test_data(&data); - -} - -static void test_acpi_virt_tcg_numamem(void) -{ - test_data data = { - .machine = "virt", - .tcg_only = true, - .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd", - .uefi_fl2 = "pc-bios/edk2-arm-vars.fd", - .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2", - .ram_start = 0x40000000ULL, - .scan_len = 128ULL * 1024 * 1024, - }; - - data.variant = ".numamem"; - test_acpi_one(" -cpu cortex-a57" - " -object memory-backend-ram,id=ram0,size=128M" - " -numa node,memdev=ram0", - &data); - - free_test_data(&data); - -} - -static void test_acpi_tcg_acpi_hmat(const char *machine) -{ - test_data data; - - memset(&data, 0, sizeof(data)); - data.machine = machine; - data.variant = ".acpihmat"; - test_acpi_one(" -machine hmat=on" - " -smp 2,sockets=2" - " -m 128M,slots=2,maxmem=1G" - " -object memory-backend-ram,size=64M,id=m0" - " -object memory-backend-ram,size=64M,id=m1" - " -numa node,nodeid=0,memdev=m0" - " -numa node,nodeid=1,memdev=m1,initiator=0" - " -numa cpu,node-id=0,socket-id=0" - " -numa cpu,node-id=0,socket-id=1" - " -numa hmat-lb,initiator=0,target=0,hierarchy=memory," - "data-type=access-latency,latency=1" - " -numa hmat-lb,initiator=0,target=0,hierarchy=memory," - "data-type=access-bandwidth,bandwidth=65534M" - " -numa hmat-lb,initiator=0,target=1,hierarchy=memory," - "data-type=access-latency,latency=65534" - " -numa hmat-lb,initiator=0,target=1,hierarchy=memory," - "data-type=access-bandwidth,bandwidth=32767M" - " -numa hmat-cache,node-id=0,size=10K,level=1," - "associativity=direct,policy=write-back,line=8" - " -numa hmat-cache,node-id=1,size=10K,level=1," - "associativity=direct,policy=write-back,line=8", - &data); - free_test_data(&data); -} - -static void test_acpi_q35_tcg_acpi_hmat(void) -{ - test_acpi_tcg_acpi_hmat(MACHINE_Q35); -} - -static void test_acpi_piix4_tcg_acpi_hmat(void) -{ - test_acpi_tcg_acpi_hmat(MACHINE_PC); -} - -static void test_acpi_virt_tcg(void) -{ - test_data data = { - .machine = "virt", - .tcg_only = true, - .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd", - .uefi_fl2 = "pc-bios/edk2-arm-vars.fd", - .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2", - .ram_start = 0x40000000ULL, - .scan_len = 128ULL * 1024 * 1024, - }; - - test_acpi_one("-cpu cortex-a57", &data); - free_test_data(&data); - - data.smbios_cpu_max_speed = 2900; - data.smbios_cpu_curr_speed = 2700; - test_acpi_one("-cpu cortex-a57 " - "-smbios type=4,max-speed=2900,current-speed=2700", &data); - free_test_data(&data); -} - -int main(int argc, char *argv[]) -{ - const char *arch = qtest_get_arch(); - int ret; - - g_test_init(&argc, &argv, NULL); - - if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { - ret = boot_sector_init(disk); - if (ret) { - return ret; - } - - qtest_add_func("acpi/q35/tpm-tis", test_acpi_q35_tcg_tpm_tis); - qtest_add_func("acpi/piix4", test_acpi_piix4_tcg); - qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge); -<<<<<<< HEAD - qtest_add_func("acpi/piix4/brhotplug", test_acpi_piix4_bridge_hotplug); -======= - qtest_add_func("acpi/piix4/hotplug", test_acpi_piix4_root_hotplug); ->>>>>>> tests/acpi: add a new unit test to test hotplug off/on feature on the root pci bus - qtest_add_func("acpi/q35", test_acpi_q35_tcg); - qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge); - qtest_add_func("acpi/q35/mmio64", test_acpi_q35_tcg_mmio64); - qtest_add_func("acpi/piix4/ipmi", test_acpi_piix4_tcg_ipmi); - qtest_add_func("acpi/q35/ipmi", test_acpi_q35_tcg_ipmi); - qtest_add_func("acpi/piix4/cpuhp", test_acpi_piix4_tcg_cphp); - qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp); - qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp); - qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp); - qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem); - qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem); - qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm); - qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm); - qtest_add_func("acpi/piix4/acpihmat", test_acpi_piix4_tcg_acpi_hmat); - qtest_add_func("acpi/q35/acpihmat", test_acpi_q35_tcg_acpi_hmat); - } else if (strcmp(arch, "aarch64") == 0) { - qtest_add_func("acpi/virt", test_acpi_virt_tcg); - qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem); - qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp); - } - ret = g_test_run(); - boot_sector_cleanup(disk); - return ret; -} diff --git a/tests/qtest/bios-tables-test.c.rej b/tests/qtest/bios-tables-test.c.rej deleted file mode 100644 index aacd6ae220c..00000000000 --- a/tests/qtest/bios-tables-test.c.rej +++ /dev/null @@ -1,22 +0,0 @@ ---- tests/qtest/bios-tables-test.c -+++ tests/qtest/bios-tables-test.c -@@ -927,12 +927,17 @@ static void test_acpi_virt_tcg_memhp(void) - }; - 20 - data.variant =3D ".memhp"; -- test_acpi_one(" -cpu cortex-a57" -+ test_acpi_one(" -machine nvdimm=3Don" -+ " -cpu cortex-a57" - " -m 256M,slots=3D3,maxmem=3D1G" - " -object memory-backend-ram,id=3Dram0,size=3D128M" - " -object memory-backend-ram,id=3Dram1,size=3D128M" - " -numa node,memdev=3Dram0 -numa node,memdev=3Dram1" -- " -numa dist,src=3D0,dst=3D1,val=3D21", -+ " -numa dist,src=3D0,dst=3D1,val=3D21" -+ " -object memory-backend-ram,id=3Dram2,size=3D128M" -+ " -object memory-backend-ram,id=3Dnvm0,size=3D128M" -+ " -device pc-dimm,id=3Ddimm0,memdev=3Dram2,node=3D0" -+ " -device nvdimm,id=3Ddimm1,memdev=3Dnvm0,node=3D1", - &data); - 20 - free_test_data(&data); diff --git a/tests/test-qapi-event.c b/tests/test-qapi-event.c deleted file mode 100644 index bdeb9095d4e..00000000000 --- a/tests/test-qapi-event.c +++ /dev/null @@ -1,198 +0,0 @@ -/* AUTOMATICALLY GENERATED, DO NOT MODIFY */ - -/* - * schema-defined QAPI event functions - * - * Copyright (c) 2014 Wenchao Xia - * - * Authors: - * Wenchao Xia - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. - * See the COPYING.LIB file in the top-level directory. - * - */ - -#include "qemu/osdep.h" -#include "qemu-common.h" -#include "test-qapi-event.h" -#include "test-qapi-visit.h" -#include "qapi/qmp-output-visitor.h" -#include "qapi/qmp-event.h" - - -void qapi_event_send_event_a(Error **errp) -{ - QDict *qmp; - Error *err = NULL; - QMPEventFuncEmit emit; - - emit = qmp_event_get_func_emit(); - if (!emit) { - return; - } - - qmp = qmp_event_build_dict("EVENT_A"); - - emit(TEST_QAPI_EVENT_EVENT_A, qmp, &err); - - error_propagate(errp, err); - QDECREF(qmp); -} - -void qapi_event_send_event_b(Error **errp) -{ - QDict *qmp; - Error *err = NULL; - QMPEventFuncEmit emit; - - emit = qmp_event_get_func_emit(); - if (!emit) { - return; - } - - qmp = qmp_event_build_dict("EVENT_B"); - - emit(TEST_QAPI_EVENT_EVENT_B, qmp, &err); - - error_propagate(errp, err); - QDECREF(qmp); -} - -void qapi_event_send_event_c(bool has_a, int64_t a, bool has_b, UserDefOne *b, const char *c, Error **errp) -{ - QDict *qmp; - Error *err = NULL; - QMPEventFuncEmit emit; - QmpOutputVisitor *qov; - Visitor *v; - q_obj_EVENT_C_arg param = { - has_a, a, has_b, b, (char *)c - }; - - emit = qmp_event_get_func_emit(); - if (!emit) { - return; - } - - qmp = qmp_event_build_dict("EVENT_C"); - - qov = qmp_output_visitor_new(); - v = qmp_output_get_visitor(qov); - - visit_start_struct(v, "EVENT_C", NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_EVENT_C_arg_members(v, ¶m, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - qdict_put_obj(qmp, "data", qmp_output_get_qobject(qov)); - emit(TEST_QAPI_EVENT_EVENT_C, qmp, &err); - -out: - qmp_output_visitor_cleanup(qov); - error_propagate(errp, err); - QDECREF(qmp); -} - -void qapi_event_send_event_d(EventStructOne *a, const char *b, bool has_c, const char *c, bool has_enum3, EnumOne enum3, Error **errp) -{ - QDict *qmp; - Error *err = NULL; - QMPEventFuncEmit emit; - QmpOutputVisitor *qov; - Visitor *v; - q_obj_EVENT_D_arg param = { - a, (char *)b, has_c, (char *)c, has_enum3, enum3 - }; - - emit = qmp_event_get_func_emit(); - if (!emit) { - return; - } - - qmp = qmp_event_build_dict("EVENT_D"); - - qov = qmp_output_visitor_new(); - v = qmp_output_get_visitor(qov); - - visit_start_struct(v, "EVENT_D", NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_EVENT_D_arg_members(v, ¶m, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - qdict_put_obj(qmp, "data", qmp_output_get_qobject(qov)); - emit(TEST_QAPI_EVENT_EVENT_D, qmp, &err); - -out: - qmp_output_visitor_cleanup(qov); - error_propagate(errp, err); - QDECREF(qmp); -} - -void qapi_event_send___org_qemu_x_event(__org_qemu_x_Enum __org_qemu_x_member1, const char *__org_qemu_x_member2, bool has_q_wchar_t, int64_t q_wchar_t, Error **errp) -{ - QDict *qmp; - Error *err = NULL; - QMPEventFuncEmit emit; - QmpOutputVisitor *qov; - Visitor *v; - __org_qemu_x_Struct param = { - __org_qemu_x_member1, (char *)__org_qemu_x_member2, has_q_wchar_t, q_wchar_t - }; - - emit = qmp_event_get_func_emit(); - if (!emit) { - return; - } - - qmp = qmp_event_build_dict("__ORG.QEMU_X-EVENT"); - - qov = qmp_output_visitor_new(); - v = qmp_output_get_visitor(qov); - - visit_start_struct(v, "__ORG.QEMU_X-EVENT", NULL, 0, &err); - if (err) { - goto out; - } - visit_type___org_qemu_x_Struct_members(v, ¶m, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - qdict_put_obj(qmp, "data", qmp_output_get_qobject(qov)); - emit(TEST_QAPI_EVENT___ORG_QEMU_X_EVENT, qmp, &err); - -out: - qmp_output_visitor_cleanup(qov); - error_propagate(errp, err); - QDECREF(qmp); -} - -const char *const test_QAPIEvent_lookup[] = { - [TEST_QAPI_EVENT_EVENT_A] = "EVENT_A", - [TEST_QAPI_EVENT_EVENT_B] = "EVENT_B", - [TEST_QAPI_EVENT_EVENT_C] = "EVENT_C", - [TEST_QAPI_EVENT_EVENT_D] = "EVENT_D", - [TEST_QAPI_EVENT___ORG_QEMU_X_EVENT] = "__ORG.QEMU_X-EVENT", - [TEST_QAPI_EVENT__MAX] = NULL, -}; diff --git a/tests/test-qmp-introspect.c b/tests/test-qmp-introspect.c deleted file mode 100644 index edae06c64e3..00000000000 --- a/tests/test-qmp-introspect.c +++ /dev/null @@ -1,58 +0,0 @@ -/* AUTOMATICALLY GENERATED, DO NOT MODIFY */ - -/* - * QAPI/QMP schema introspection - * - * Copyright (C) 2015 Red Hat, Inc. - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. - * See the COPYING.LIB file in the top-level directory. - * - */ - -#include "qemu/osdep.h" -#include "test-qmp-introspect.h" - -const char test_qmp_schema_json[] = "[" - "{\"arg-type\": \"0\", \"meta-type\": \"event\", \"name\": \"EVENT_A\"}, " - "{\"arg-type\": \"0\", \"meta-type\": \"event\", \"name\": \"EVENT_B\"}, " - "{\"arg-type\": \"1\", \"meta-type\": \"event\", \"name\": \"EVENT_C\"}, " - "{\"arg-type\": \"2\", \"meta-type\": \"event\", \"name\": \"EVENT_D\"}, " - "{\"arg-type\": \"3\", \"meta-type\": \"event\", \"name\": \"__ORG.QEMU_X-EVENT\"}, " - "{\"arg-type\": \"4\", \"meta-type\": \"command\", \"name\": \"__org.qemu_x-command\", \"ret-type\": \"5\"}, " - "{\"arg-type\": \"6\", \"meta-type\": \"command\", \"name\": \"guest-get-time\", \"ret-type\": \"int\"}, " - "{\"arg-type\": \"7\", \"meta-type\": \"command\", \"name\": \"guest-sync\", \"ret-type\": \"any\"}, " - "{\"arg-type\": \"0\", \"meta-type\": \"command\", \"name\": \"user_def_cmd\", \"ret-type\": \"0\"}, " - "{\"arg-type\": \"8\", \"meta-type\": \"command\", \"name\": \"user_def_cmd0\", \"ret-type\": \"8\"}, " - "{\"arg-type\": \"9\", \"meta-type\": \"command\", \"name\": \"user_def_cmd1\", \"ret-type\": \"0\"}, " - "{\"arg-type\": \"10\", \"meta-type\": \"command\", \"name\": \"user_def_cmd2\", \"ret-type\": \"11\"}, " - "{\"members\": [], \"meta-type\": \"object\", \"name\": \"0\"}, " - "{\"members\": [{\"default\": null, \"name\": \"a\", \"type\": \"int\"}, {\"default\": null, \"name\": \"b\", \"type\": \"12\"}, {\"name\": \"c\", \"type\": \"str\"}], \"meta-type\": \"object\", \"name\": \"1\"}, " - "{\"members\": [{\"name\": \"a\", \"type\": \"13\"}, {\"name\": \"b\", \"type\": \"str\"}, {\"default\": null, \"name\": \"c\", \"type\": \"str\"}, {\"default\": null, \"name\": \"enum3\", \"type\": \"14\"}], \"meta-type\": \"object\", \"name\": \"2\"}, " - "{\"members\": [{\"name\": \"__org.qemu_x-member1\", \"type\": \"15\"}, {\"name\": \"__org.qemu_x-member2\", \"type\": \"str\"}, {\"default\": null, \"name\": \"wchar-t\", \"type\": \"int\"}], \"meta-type\": \"object\", \"name\": \"3\"}, " - "{\"members\": [{\"name\": \"a\", \"type\": \"[15]\"}, {\"name\": \"b\", \"type\": \"[3]\"}, {\"name\": \"c\", \"type\": \"16\"}, {\"name\": \"d\", \"type\": \"17\"}], \"meta-type\": \"object\", \"name\": \"4\"}, " - "{\"members\": [{\"name\": \"type\", \"type\": \"18\"}], \"meta-type\": \"object\", \"name\": \"5\", \"tag\": \"type\", \"variants\": [{\"case\": \"__org.qemu_x-branch\", \"type\": \"19\"}]}, " - "{\"members\": [{\"name\": \"a\", \"type\": \"int\"}, {\"default\": null, \"name\": \"b\", \"type\": \"int\"}], \"meta-type\": \"object\", \"name\": \"6\"}, " - "{\"json-type\": \"int\", \"meta-type\": \"builtin\", \"name\": \"int\"}, " - "{\"members\": [{\"name\": \"arg\", \"type\": \"any\"}], \"meta-type\": \"object\", \"name\": \"7\"}, " - "{\"json-type\": \"value\", \"meta-type\": \"builtin\", \"name\": \"any\"}, " - "{\"members\": [], \"meta-type\": \"object\", \"name\": \"8\"}, " - "{\"members\": [{\"name\": \"ud1a\", \"type\": \"12\"}], \"meta-type\": \"object\", \"name\": \"9\"}, " - "{\"members\": [{\"name\": \"ud1a\", \"type\": \"12\"}, {\"default\": null, \"name\": \"ud1b\", \"type\": \"12\"}], \"meta-type\": \"object\", \"name\": \"10\"}, " - "{\"members\": [{\"name\": \"string0\", \"type\": \"str\"}, {\"name\": \"dict1\", \"type\": \"20\"}], \"meta-type\": \"object\", \"name\": \"11\"}, " - "{\"members\": [{\"name\": \"integer\", \"type\": \"int\"}, {\"name\": \"string\", \"type\": \"str\"}, {\"default\": null, \"name\": \"enum1\", \"type\": \"14\"}], \"meta-type\": \"object\", \"name\": \"12\"}, " - "{\"json-type\": \"string\", \"meta-type\": \"builtin\", \"name\": \"str\"}, " - "{\"members\": [{\"name\": \"struct1\", \"type\": \"12\"}, {\"name\": \"string\", \"type\": \"str\"}, {\"default\": null, \"name\": \"enum2\", \"type\": \"14\"}], \"meta-type\": \"object\", \"name\": \"13\"}, " - "{\"meta-type\": \"enum\", \"name\": \"14\", \"values\": [\"value1\", \"value2\", \"value3\"]}, " - "{\"meta-type\": \"enum\", \"name\": \"15\", \"values\": [\"__org.qemu_x-value\"]}, " - "{\"element-type\": \"15\", \"meta-type\": \"array\", \"name\": \"[15]\"}, " - "{\"element-type\": \"3\", \"meta-type\": \"array\", \"name\": \"[3]\"}, " - "{\"members\": [{\"name\": \"__org.qemu_x-member1\", \"type\": \"15\"}], \"meta-type\": \"object\", \"name\": \"16\", \"tag\": \"__org.qemu_x-member1\", \"variants\": [{\"case\": \"__org.qemu_x-value\", \"type\": \"21\"}]}, " - "{\"members\": [{\"type\": \"str\"}, {\"type\": \"22\"}], \"meta-type\": \"alternate\", \"name\": \"17\"}, " - "{\"meta-type\": \"enum\", \"name\": \"18\", \"values\": [\"__org.qemu_x-branch\"]}, " - "{\"members\": [{\"name\": \"data\", \"type\": \"str\"}], \"meta-type\": \"object\", \"name\": \"19\"}, " - "{\"members\": [{\"name\": \"string1\", \"type\": \"str\"}, {\"name\": \"dict2\", \"type\": \"23\"}, {\"default\": null, \"name\": \"dict3\", \"type\": \"23\"}], \"meta-type\": \"object\", \"name\": \"20\"}, " - "{\"members\": [{\"name\": \"array\", \"type\": \"[5]\"}], \"meta-type\": \"object\", \"name\": \"21\"}, " - "{\"members\": [{\"name\": \"__org.qemu_x-member1\", \"type\": \"15\"}], \"meta-type\": \"object\", \"name\": \"22\"}, " - "{\"members\": [{\"name\": \"userdef\", \"type\": \"12\"}, {\"name\": \"string\", \"type\": \"str\"}], \"meta-type\": \"object\", \"name\": \"23\"}, " - "{\"element-type\": \"5\", \"meta-type\": \"array\", \"name\": \"[5]\"}]"; diff --git a/tests/test-qmp-marshal.c b/tests/test-qmp-marshal.c deleted file mode 100644 index 54e3952d358..00000000000 --- a/tests/test-qmp-marshal.c +++ /dev/null @@ -1,383 +0,0 @@ -/* AUTOMATICALLY GENERATED, DO NOT MODIFY */ - -/* - * schema-defined QMP->QAPI command dispatch - * - * Copyright IBM, Corp. 2011 - * - * Authors: - * Anthony Liguori - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. - * See the COPYING.LIB file in the top-level directory. - * - */ - -#include "qemu/osdep.h" -#include "qemu-common.h" -#include "qemu/module.h" -#include "qapi/qmp/types.h" -#include "qapi/qmp/dispatch.h" -#include "qapi/visitor.h" -#include "qapi/qmp-output-visitor.h" -#include "qapi/qmp-input-visitor.h" -#include "qapi/dealloc-visitor.h" -#include "test-qapi-types.h" -#include "test-qapi-visit.h" -#include "test-qmp-commands.h" - - -static void qmp_marshal_output___org_qemu_x_Union1(__org_qemu_x_Union1 *ret_in, QObject **ret_out, Error **errp) -{ - Error *err = NULL; - QmpOutputVisitor *qov = qmp_output_visitor_new(); - QapiDeallocVisitor *qdv; - Visitor *v; - - v = qmp_output_get_visitor(qov); - visit_type___org_qemu_x_Union1(v, "unused", &ret_in, &err); - if (err) { - goto out; - } - *ret_out = qmp_output_get_qobject(qov); - -out: - error_propagate(errp, err); - qmp_output_visitor_cleanup(qov); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_type___org_qemu_x_Union1(v, "unused", &ret_in, NULL); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal___org_qemu_x_command(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - __org_qemu_x_Union1 *retval; - QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); - QapiDeallocVisitor *qdv; - Visitor *v; - q_obj___org_qemu_x_command_arg arg = {0}; - - v = qmp_input_get_visitor(qiv); - visit_start_struct(v, NULL, NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj___org_qemu_x_command_arg_members(v, &arg, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - retval = qmp___org_qemu_x_command(arg.a, arg.b, arg.c, arg.d, &err); - if (err) { - goto out; - } - - qmp_marshal_output___org_qemu_x_Union1(retval, ret, &err); - -out: - error_propagate(errp, err); - qmp_input_visitor_cleanup(qiv); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_q_obj___org_qemu_x_command_arg_members(v, &arg, NULL); - visit_end_struct(v); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_output_int(int64_t ret_in, QObject **ret_out, Error **errp) -{ - Error *err = NULL; - QmpOutputVisitor *qov = qmp_output_visitor_new(); - QapiDeallocVisitor *qdv; - Visitor *v; - - v = qmp_output_get_visitor(qov); - visit_type_int(v, "unused", &ret_in, &err); - if (err) { - goto out; - } - *ret_out = qmp_output_get_qobject(qov); - -out: - error_propagate(errp, err); - qmp_output_visitor_cleanup(qov); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_type_int(v, "unused", &ret_in, NULL); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_guest_get_time(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - int64_t retval; - QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); - QapiDeallocVisitor *qdv; - Visitor *v; - q_obj_guest_get_time_arg arg = {0}; - - v = qmp_input_get_visitor(qiv); - visit_start_struct(v, NULL, NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_guest_get_time_arg_members(v, &arg, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - retval = qmp_guest_get_time(arg.a, arg.has_b, arg.b, &err); - if (err) { - goto out; - } - - qmp_marshal_output_int(retval, ret, &err); - -out: - error_propagate(errp, err); - qmp_input_visitor_cleanup(qiv); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_q_obj_guest_get_time_arg_members(v, &arg, NULL); - visit_end_struct(v); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_output_any(QObject *ret_in, QObject **ret_out, Error **errp) -{ - Error *err = NULL; - QmpOutputVisitor *qov = qmp_output_visitor_new(); - QapiDeallocVisitor *qdv; - Visitor *v; - - v = qmp_output_get_visitor(qov); - visit_type_any(v, "unused", &ret_in, &err); - if (err) { - goto out; - } - *ret_out = qmp_output_get_qobject(qov); - -out: - error_propagate(errp, err); - qmp_output_visitor_cleanup(qov); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_type_any(v, "unused", &ret_in, NULL); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_guest_sync(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - QObject *retval; - QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); - QapiDeallocVisitor *qdv; - Visitor *v; - q_obj_guest_sync_arg arg = {0}; - - v = qmp_input_get_visitor(qiv); - visit_start_struct(v, NULL, NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_guest_sync_arg_members(v, &arg, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - retval = qmp_guest_sync(arg.arg, &err); - if (err) { - goto out; - } - - qmp_marshal_output_any(retval, ret, &err); - -out: - error_propagate(errp, err); - qmp_input_visitor_cleanup(qiv); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_q_obj_guest_sync_arg_members(v, &arg, NULL); - visit_end_struct(v); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_user_def_cmd(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - - (void)args; - - qmp_user_def_cmd(&err); - error_propagate(errp, err); -} - -static void qmp_marshal_output_Empty2(Empty2 *ret_in, QObject **ret_out, Error **errp) -{ - Error *err = NULL; - QmpOutputVisitor *qov = qmp_output_visitor_new(); - QapiDeallocVisitor *qdv; - Visitor *v; - - v = qmp_output_get_visitor(qov); - visit_type_Empty2(v, "unused", &ret_in, &err); - if (err) { - goto out; - } - *ret_out = qmp_output_get_qobject(qov); - -out: - error_propagate(errp, err); - qmp_output_visitor_cleanup(qov); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_type_Empty2(v, "unused", &ret_in, NULL); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_user_def_cmd0(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - Empty2 *retval; - - (void)args; - - retval = qmp_user_def_cmd0(&err); - if (err) { - goto out; - } - - qmp_marshal_output_Empty2(retval, ret, &err); - -out: - error_propagate(errp, err); -} - -static void qmp_marshal_user_def_cmd1(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); - QapiDeallocVisitor *qdv; - Visitor *v; - q_obj_user_def_cmd1_arg arg = {0}; - - v = qmp_input_get_visitor(qiv); - visit_start_struct(v, NULL, NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_user_def_cmd1_arg_members(v, &arg, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - qmp_user_def_cmd1(arg.ud1a, &err); - -out: - error_propagate(errp, err); - qmp_input_visitor_cleanup(qiv); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_q_obj_user_def_cmd1_arg_members(v, &arg, NULL); - visit_end_struct(v); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_output_UserDefTwo(UserDefTwo *ret_in, QObject **ret_out, Error **errp) -{ - Error *err = NULL; - QmpOutputVisitor *qov = qmp_output_visitor_new(); - QapiDeallocVisitor *qdv; - Visitor *v; - - v = qmp_output_get_visitor(qov); - visit_type_UserDefTwo(v, "unused", &ret_in, &err); - if (err) { - goto out; - } - *ret_out = qmp_output_get_qobject(qov); - -out: - error_propagate(errp, err); - qmp_output_visitor_cleanup(qov); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_type_UserDefTwo(v, "unused", &ret_in, NULL); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_marshal_user_def_cmd2(QDict *args, QObject **ret, Error **errp) -{ - Error *err = NULL; - UserDefTwo *retval; - QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); - QapiDeallocVisitor *qdv; - Visitor *v; - q_obj_user_def_cmd2_arg arg = {0}; - - v = qmp_input_get_visitor(qiv); - visit_start_struct(v, NULL, NULL, 0, &err); - if (err) { - goto out; - } - visit_type_q_obj_user_def_cmd2_arg_members(v, &arg, &err); - if (!err) { - visit_check_struct(v, &err); - } - visit_end_struct(v); - if (err) { - goto out; - } - - retval = qmp_user_def_cmd2(arg.ud1a, arg.has_ud1b, arg.ud1b, &err); - if (err) { - goto out; - } - - qmp_marshal_output_UserDefTwo(retval, ret, &err); - -out: - error_propagate(errp, err); - qmp_input_visitor_cleanup(qiv); - qdv = qapi_dealloc_visitor_new(); - v = qapi_dealloc_get_visitor(qdv); - visit_start_struct(v, NULL, NULL, 0, NULL); - visit_type_q_obj_user_def_cmd2_arg_members(v, &arg, NULL); - visit_end_struct(v); - qapi_dealloc_visitor_cleanup(qdv); -} - -static void qmp_init_marshal(void) -{ - qmp_register_command("__org.qemu_x-command", qmp_marshal___org_qemu_x_command, QCO_NO_OPTIONS); - qmp_register_command("guest-get-time", qmp_marshal_guest_get_time, QCO_NO_OPTIONS); - qmp_register_command("guest-sync", qmp_marshal_guest_sync, QCO_NO_OPTIONS); - qmp_register_command("user_def_cmd", qmp_marshal_user_def_cmd, QCO_NO_OPTIONS); - qmp_register_command("user_def_cmd0", qmp_marshal_user_def_cmd0, QCO_NO_OPTIONS); - qmp_register_command("user_def_cmd1", qmp_marshal_user_def_cmd1, QCO_NO_OPTIONS); - qmp_register_command("user_def_cmd2", qmp_marshal_user_def_cmd2, QCO_NO_OPTIONS); -} - -qapi_init(qmp_init_marshal); diff --git a/tests/vhost-user-bridge b/tests/vhost-user-bridge deleted file mode 100755 index 36d1ece0dc8a198846c3a8bf277c1f7d093736f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 83120 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 bx99?&@meq52R3W{RZow+p@qa}rOW$2GePBQ diff --git a/tests/vhost-user-bridge.c.orig b/tests/vhost-user-bridge.c.orig deleted file mode 100644 index f907ce741f0..00000000000 --- a/tests/vhost-user-bridge.c.orig +++ /dev/null @@ -1,1432 +0,0 @@ -/* - * Vhost User Bridge - * - * Copyright (c) 2015 Red Hat, Inc. - * - * Authors: - * Victor Kaplansky - * - * This work is licensed under the terms of the GNU GPL, version 2 or - * later. See the COPYING file in the top-level directory. - */ - -/* - * TODO: - * - main should get parameters from the command line. - * - implement all request handlers. Still not implemented: - * vubr_get_queue_num_exec() - * vubr_send_rarp_exec() - * - test for broken requests and virtqueue. - * - implement features defined by Virtio 1.0 spec. - * - support mergeable buffers and indirect descriptors. - * - implement clean shutdown. - * - implement non-blocking writes to UDP backend. - * - implement polling strategy. - * - implement clean starting/stopping of vq processing - * - implement clean starting/stopping of used and buffers - * dirty page logging. - */ - -#define _FILE_OFFSET_BITS 64 - -#include "qemu/osdep.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "qemu/atomic.h" -#include "standard-headers/linux/virtio_net.h" -#include "standard-headers/linux/virtio_ring.h" - -#define VHOST_USER_BRIDGE_DEBUG 1 - -#define DPRINT(...) \ - do { \ - if (VHOST_USER_BRIDGE_DEBUG) { \ - printf(__VA_ARGS__); \ - } \ - } while (0) - -typedef void (*CallbackFunc)(int sock, void *ctx); - -typedef struct Event { - void *ctx; - CallbackFunc callback; -} Event; - -typedef struct Dispatcher { - int max_sock; - fd_set fdset; - Event events[FD_SETSIZE]; -} Dispatcher; - -static void -vubr_die(const char *s) -{ - perror(s); - exit(1); -} - -static int -dispatcher_init(Dispatcher *dispr) -{ - FD_ZERO(&dispr->fdset); - dispr->max_sock = -1; - return 0; -} - -static int -dispatcher_add(Dispatcher *dispr, int sock, void *ctx, CallbackFunc cb) -{ - if (sock >= FD_SETSIZE) { - fprintf(stderr, - "Error: Failed to add new event. sock %d should be less than %d\n", - sock, FD_SETSIZE); - return -1; - } - - dispr->events[sock].ctx = ctx; - dispr->events[sock].callback = cb; - - FD_SET(sock, &dispr->fdset); - if (sock > dispr->max_sock) { - dispr->max_sock = sock; - } - DPRINT("Added sock %d for watching. max_sock: %d\n", - sock, dispr->max_sock); - return 0; -} - -/* dispatcher_remove() is not currently in use but may be useful - * in the future. */ -static int -dispatcher_remove(Dispatcher *dispr, int sock) -{ - if (sock >= FD_SETSIZE) { - fprintf(stderr, - "Error: Failed to remove event. sock %d should be less than %d\n", - sock, FD_SETSIZE); - return -1; - } - - FD_CLR(sock, &dispr->fdset); - DPRINT("Sock %d removed from dispatcher watch.\n", sock); - return 0; -} - -/* timeout in us */ -static int -dispatcher_wait(Dispatcher *dispr, uint32_t timeout) -{ - struct timeval tv; - tv.tv_sec = timeout / 1000000; - tv.tv_usec = timeout % 1000000; - - fd_set fdset = dispr->fdset; - - /* wait until some of sockets become readable. */ - int rc = select(dispr->max_sock + 1, &fdset, 0, 0, &tv); - - if (rc == -1) { - vubr_die("select"); - } - - /* Timeout */ - if (rc == 0) { - return 0; - } - - /* Now call callback for every ready socket. */ - - int sock; - for (sock = 0; sock < dispr->max_sock + 1; sock++) { - /* The callback on a socket can remove other sockets from the - * dispatcher, thus we have to check that the socket is - * still not removed from dispatcher's list - */ - if (FD_ISSET(sock, &fdset) && FD_ISSET(sock, &dispr->fdset)) { - Event *e = &dispr->events[sock]; - e->callback(sock, e->ctx); - } - } - - return 0; -} - -typedef struct VubrVirtq { - int call_fd; - int kick_fd; - uint32_t size; - uint16_t last_avail_index; - uint16_t last_used_index; - struct vring_desc *desc; - struct vring_avail *avail; - struct vring_used *used; - uint64_t log_guest_addr; - int enable; -} VubrVirtq; - -/* Based on qemu/hw/virtio/vhost-user.c */ - -#define VHOST_MEMORY_MAX_NREGIONS 8 -#define VHOST_USER_F_PROTOCOL_FEATURES 30 -/* v1.0 compliant. */ -#define VIRTIO_F_VERSION_1 32 - -#define VHOST_LOG_PAGE 4096 - -enum VhostUserProtocolFeature { - VHOST_USER_PROTOCOL_F_MQ = 0, - VHOST_USER_PROTOCOL_F_LOG_SHMFD = 1, - VHOST_USER_PROTOCOL_F_RARP = 2, - - VHOST_USER_PROTOCOL_F_MAX -}; - -#define VHOST_USER_PROTOCOL_FEATURE_MASK ((1 << VHOST_USER_PROTOCOL_F_MAX) - 1) - -typedef enum VhostUserRequest { - VHOST_USER_NONE = 0, - VHOST_USER_GET_FEATURES = 1, - VHOST_USER_SET_FEATURES = 2, - VHOST_USER_SET_OWNER = 3, - VHOST_USER_RESET_OWNER = 4, - VHOST_USER_SET_MEM_TABLE = 5, - VHOST_USER_SET_LOG_BASE = 6, - VHOST_USER_SET_LOG_FD = 7, - VHOST_USER_SET_VRING_NUM = 8, - VHOST_USER_SET_VRING_ADDR = 9, - VHOST_USER_SET_VRING_BASE = 10, - VHOST_USER_GET_VRING_BASE = 11, - VHOST_USER_SET_VRING_KICK = 12, - VHOST_USER_SET_VRING_CALL = 13, - VHOST_USER_SET_VRING_ERR = 14, - VHOST_USER_GET_PROTOCOL_FEATURES = 15, - VHOST_USER_SET_PROTOCOL_FEATURES = 16, - VHOST_USER_GET_QUEUE_NUM = 17, - VHOST_USER_SET_VRING_ENABLE = 18, - VHOST_USER_SEND_RARP = 19, - VHOST_USER_MAX -} VhostUserRequest; - -typedef struct VhostUserMemoryRegion { - uint64_t guest_phys_addr; - uint64_t memory_size; - uint64_t userspace_addr; - uint64_t mmap_offset; -} VhostUserMemoryRegion; - -typedef struct VhostUserMemory { - uint32_t nregions; - uint32_t padding; - VhostUserMemoryRegion regions[VHOST_MEMORY_MAX_NREGIONS]; -} VhostUserMemory; - -typedef struct VhostUserLog { - uint64_t mmap_size; - uint64_t mmap_offset; -} VhostUserLog; - -typedef struct VhostUserMsg { - VhostUserRequest request; - -#define VHOST_USER_VERSION_MASK (0x3) -#define VHOST_USER_REPLY_MASK (0x1<<2) - uint32_t flags; - uint32_t size; /* the following payload size */ - union { -#define VHOST_USER_VRING_IDX_MASK (0xff) -#define VHOST_USER_VRING_NOFD_MASK (0x1<<8) - uint64_t u64; - struct vhost_vring_state state; - struct vhost_vring_addr addr; - VhostUserMemory memory; - VhostUserLog log; - } payload; - int fds[VHOST_MEMORY_MAX_NREGIONS]; - int fd_num; -} QEMU_PACKED VhostUserMsg; - -#define VHOST_USER_HDR_SIZE offsetof(VhostUserMsg, payload.u64) - -/* The version of the protocol we support */ -#define VHOST_USER_VERSION (0x1) - -#define MAX_NR_VIRTQUEUE (8) - -typedef struct VubrDevRegion { - /* Guest Physical address. */ - uint64_t gpa; - /* Memory region size. */ - uint64_t size; - /* QEMU virtual address (userspace). */ - uint64_t qva; - /* Starting offset in our mmaped space. */ - uint64_t mmap_offset; - /* Start address of mmaped space. */ - uint64_t mmap_addr; -} VubrDevRegion; - -typedef struct VubrDev { - int sock; - Dispatcher dispatcher; - uint32_t nregions; - VubrDevRegion regions[VHOST_MEMORY_MAX_NREGIONS]; - VubrVirtq vq[MAX_NR_VIRTQUEUE]; - int log_call_fd; - uint64_t log_size; - uint8_t *log_table; - int backend_udp_sock; - struct sockaddr_in backend_udp_dest; - int ready; - uint64_t features; - int hdrlen; -} VubrDev; - -static const char *vubr_request_str[] = { - [VHOST_USER_NONE] = "VHOST_USER_NONE", - [VHOST_USER_GET_FEATURES] = "VHOST_USER_GET_FEATURES", - [VHOST_USER_SET_FEATURES] = "VHOST_USER_SET_FEATURES", - [VHOST_USER_SET_OWNER] = "VHOST_USER_SET_OWNER", - [VHOST_USER_RESET_OWNER] = "VHOST_USER_RESET_OWNER", - [VHOST_USER_SET_MEM_TABLE] = "VHOST_USER_SET_MEM_TABLE", - [VHOST_USER_SET_LOG_BASE] = "VHOST_USER_SET_LOG_BASE", - [VHOST_USER_SET_LOG_FD] = "VHOST_USER_SET_LOG_FD", - [VHOST_USER_SET_VRING_NUM] = "VHOST_USER_SET_VRING_NUM", - [VHOST_USER_SET_VRING_ADDR] = "VHOST_USER_SET_VRING_ADDR", - [VHOST_USER_SET_VRING_BASE] = "VHOST_USER_SET_VRING_BASE", - [VHOST_USER_GET_VRING_BASE] = "VHOST_USER_GET_VRING_BASE", - [VHOST_USER_SET_VRING_KICK] = "VHOST_USER_SET_VRING_KICK", - [VHOST_USER_SET_VRING_CALL] = "VHOST_USER_SET_VRING_CALL", - [VHOST_USER_SET_VRING_ERR] = "VHOST_USER_SET_VRING_ERR", - [VHOST_USER_GET_PROTOCOL_FEATURES] = "VHOST_USER_GET_PROTOCOL_FEATURES", - [VHOST_USER_SET_PROTOCOL_FEATURES] = "VHOST_USER_SET_PROTOCOL_FEATURES", - [VHOST_USER_GET_QUEUE_NUM] = "VHOST_USER_GET_QUEUE_NUM", - [VHOST_USER_SET_VRING_ENABLE] = "VHOST_USER_SET_VRING_ENABLE", - [VHOST_USER_SEND_RARP] = "VHOST_USER_SEND_RARP", - [VHOST_USER_MAX] = "VHOST_USER_MAX", -}; - -static void -print_buffer(uint8_t *buf, size_t len) -{ - int i; - printf("Raw buffer:\n"); - for (i = 0; i < len; i++) { - if (i % 16 == 0) { - printf("\n"); - } - if (i % 4 == 0) { - printf(" "); - } - printf("%02x ", buf[i]); - } - printf("\n............................................................\n"); -} - -/* Translate guest physical address to our virtual address. */ -static uint64_t -gpa_to_va(VubrDev *dev, uint64_t guest_addr) -{ - int i; - - /* Find matching memory region. */ - for (i = 0; i < dev->nregions; i++) { - VubrDevRegion *r = &dev->regions[i]; - - if ((guest_addr >= r->gpa) && (guest_addr < (r->gpa + r->size))) { - return guest_addr - r->gpa + r->mmap_addr + r->mmap_offset; - } - } - - assert(!"address not found in regions"); - return 0; -} - -/* Translate qemu virtual address to our virtual address. */ -static uint64_t -qva_to_va(VubrDev *dev, uint64_t qemu_addr) -{ - int i; - - /* Find matching memory region. */ - for (i = 0; i < dev->nregions; i++) { - VubrDevRegion *r = &dev->regions[i]; - - if ((qemu_addr >= r->qva) && (qemu_addr < (r->qva + r->size))) { - return qemu_addr - r->qva + r->mmap_addr + r->mmap_offset; - } - } - - assert(!"address not found in regions"); - return 0; -} - -static void -vubr_message_read(int conn_fd, VhostUserMsg *vmsg) -{ - char control[CMSG_SPACE(VHOST_MEMORY_MAX_NREGIONS * sizeof(int))] = { }; - struct iovec iov = { - .iov_base = (char *)vmsg, - .iov_len = VHOST_USER_HDR_SIZE, - }; - struct msghdr msg = { - .msg_iov = &iov, - .msg_iovlen = 1, - .msg_control = control, - .msg_controllen = sizeof(control), - }; - size_t fd_size; - struct cmsghdr *cmsg; - int rc; - - rc = recvmsg(conn_fd, &msg, 0); - - if (rc == 0) { - vubr_die("recvmsg"); - fprintf(stderr, "Peer disconnected.\n"); - exit(1); - } - if (rc < 0) { - vubr_die("recvmsg"); - } - - vmsg->fd_num = 0; - for (cmsg = CMSG_FIRSTHDR(&msg); - cmsg != NULL; - cmsg = CMSG_NXTHDR(&msg, cmsg)) - { - if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { - fd_size = cmsg->cmsg_len - CMSG_LEN(0); - vmsg->fd_num = fd_size / sizeof(int); - memcpy(vmsg->fds, CMSG_DATA(cmsg), fd_size); - break; - } - } - - if (vmsg->size > sizeof(vmsg->payload)) { - fprintf(stderr, - "Error: too big message request: %d, size: vmsg->size: %u, " - "while sizeof(vmsg->payload) = %zu\n", - vmsg->request, vmsg->size, sizeof(vmsg->payload)); - exit(1); - } - - if (vmsg->size) { - rc = read(conn_fd, &vmsg->payload, vmsg->size); - if (rc == 0) { - vubr_die("recvmsg"); - fprintf(stderr, "Peer disconnected.\n"); - exit(1); - } - if (rc < 0) { - vubr_die("recvmsg"); - } - - assert(rc == vmsg->size); - } -} - -static void -vubr_message_write(int conn_fd, VhostUserMsg *vmsg) -{ - int rc; - - do { - rc = write(conn_fd, vmsg, VHOST_USER_HDR_SIZE + vmsg->size); - } while (rc < 0 && errno == EINTR); - - if (rc < 0) { - vubr_die("write"); - } -} - -static void -vubr_backend_udp_sendbuf(VubrDev *dev, uint8_t *buf, size_t len) -{ - int slen = sizeof(struct sockaddr_in); - - if (sendto(dev->backend_udp_sock, buf, len, 0, - (struct sockaddr *) &dev->backend_udp_dest, slen) == -1) { - vubr_die("sendto()"); - } -} - -static int -vubr_backend_udp_recvbuf(VubrDev *dev, uint8_t *buf, size_t buflen) -{ - int slen = sizeof(struct sockaddr_in); - int rc; - - rc = recvfrom(dev->backend_udp_sock, buf, buflen, 0, - (struct sockaddr *) &dev->backend_udp_dest, - (socklen_t *)&slen); - if (rc == -1) { - vubr_die("recvfrom()"); - } - - return rc; -} - -static void -vubr_consume_raw_packet(VubrDev *dev, uint8_t *buf, uint32_t len) -{ - int hdrlen = dev->hdrlen; - DPRINT(" hdrlen = %d\n", dev->hdrlen); - - if (VHOST_USER_BRIDGE_DEBUG) { - print_buffer(buf, len); - } - vubr_backend_udp_sendbuf(dev, buf + hdrlen, len - hdrlen); -} - -/* Kick the log_call_fd if required. */ -static void -vubr_log_kick(VubrDev *dev) -{ - if (dev->log_call_fd != -1) { - DPRINT("Kicking the QEMU's log...\n"); - eventfd_write(dev->log_call_fd, 1); - } -} - -/* Kick the guest if necessary. */ -static void -vubr_virtqueue_kick(VubrVirtq *vq) -{ - if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) { - DPRINT("Kicking the guest...\n"); - eventfd_write(vq->call_fd, 1); - } -} - -static void -vubr_log_page(uint8_t *log_table, uint64_t page) -{ - DPRINT("Logged dirty guest page: %"PRId64"\n", page); - atomic_or(&log_table[page / 8], 1 << (page % 8)); -} - -static void -vubr_log_write(VubrDev *dev, uint64_t address, uint64_t length) -{ - uint64_t page; - - if (!(dev->features & (1ULL << VHOST_F_LOG_ALL)) || - !dev->log_table || !length) { - return; - } - - assert(dev->log_size > ((address + length - 1) / VHOST_LOG_PAGE / 8)); - - page = address / VHOST_LOG_PAGE; - while (page * VHOST_LOG_PAGE < address + length) { - vubr_log_page(dev->log_table, page); - page += VHOST_LOG_PAGE; - } - vubr_log_kick(dev); -} - -static void -vubr_post_buffer(VubrDev *dev, VubrVirtq *vq, uint8_t *buf, int32_t len) -{ - struct vring_desc *desc = vq->desc; - struct vring_avail *avail = vq->avail; - struct vring_used *used = vq->used; - uint64_t log_guest_addr = vq->log_guest_addr; - int32_t remaining_len = len; - - unsigned int size = vq->size; - - uint16_t avail_index = atomic_mb_read(&avail->idx); - - /* We check the available descriptors before posting the - * buffer, so here we assume that enough available - * descriptors. */ - assert(vq->last_avail_index != avail_index); - uint16_t a_index = vq->last_avail_index % size; - uint16_t u_index = vq->last_used_index % size; - uint16_t d_index = avail->ring[a_index]; - - int i = d_index; - uint32_t written_len = 0; - - do { - DPRINT("Post packet to guest on vq:\n"); - DPRINT(" size = %d\n", vq->size); - DPRINT(" last_avail_index = %d\n", vq->last_avail_index); - DPRINT(" last_used_index = %d\n", vq->last_used_index); - DPRINT(" a_index = %d\n", a_index); - DPRINT(" u_index = %d\n", u_index); - DPRINT(" d_index = %d\n", d_index); - DPRINT(" desc[%d].addr = 0x%016"PRIx64"\n", i, desc[i].addr); - DPRINT(" desc[%d].len = %d\n", i, desc[i].len); - DPRINT(" desc[%d].flags = %d\n", i, desc[i].flags); - DPRINT(" avail->idx = %d\n", avail_index); - DPRINT(" used->idx = %d\n", used->idx); - - if (!(desc[i].flags & VRING_DESC_F_WRITE)) { - /* FIXME: we should find writable descriptor. */ - fprintf(stderr, "Error: descriptor is not writable. Exiting.\n"); - exit(1); - } - - void *chunk_start = (void *)(uintptr_t)gpa_to_va(dev, desc[i].addr); - uint32_t chunk_len = desc[i].len; - uint32_t chunk_write_len = MIN(remaining_len, chunk_len); - - memcpy(chunk_start, buf + written_len, chunk_write_len); - vubr_log_write(dev, desc[i].addr, chunk_write_len); - remaining_len -= chunk_write_len; - written_len += chunk_write_len; - - if ((remaining_len == 0) || !(desc[i].flags & VRING_DESC_F_NEXT)) { - break; - } - - i = desc[i].next; - } while (1); - - if (remaining_len > 0) { - fprintf(stderr, - "Too long packet for RX, remaining_len = %d, Dropping...\n", - remaining_len); - return; - } - - /* Add descriptor to the used ring. */ - used->ring[u_index].id = d_index; - used->ring[u_index].len = len; - vubr_log_write(dev, - log_guest_addr + offsetof(struct vring_used, ring[u_index]), - sizeof(used->ring[u_index])); - - vq->last_avail_index++; - vq->last_used_index++; - - atomic_mb_set(&used->idx, vq->last_used_index); - vubr_log_write(dev, - log_guest_addr + offsetof(struct vring_used, idx), - sizeof(used->idx)); - - /* Kick the guest if necessary. */ - vubr_virtqueue_kick(vq); -} - -static int -vubr_process_desc(VubrDev *dev, VubrVirtq *vq) -{ - struct vring_desc *desc = vq->desc; - struct vring_avail *avail = vq->avail; - struct vring_used *used = vq->used; - uint64_t log_guest_addr = vq->log_guest_addr; - - unsigned int size = vq->size; - - uint16_t a_index = vq->last_avail_index % size; - uint16_t u_index = vq->last_used_index % size; - uint16_t d_index = avail->ring[a_index]; - - uint32_t i, len = 0; - size_t buf_size = 4096; - uint8_t buf[4096]; - - DPRINT("Chunks: "); - i = d_index; - do { - void *chunk_start = (void *)(uintptr_t)gpa_to_va(dev, desc[i].addr); - uint32_t chunk_len = desc[i].len; - - assert(!(desc[i].flags & VRING_DESC_F_WRITE)); - - if (len + chunk_len < buf_size) { - memcpy(buf + len, chunk_start, chunk_len); - DPRINT("%d ", chunk_len); - } else { - fprintf(stderr, "Error: too long packet. Dropping...\n"); - break; - } - - len += chunk_len; - - if (!(desc[i].flags & VRING_DESC_F_NEXT)) { - break; - } - - i = desc[i].next; - } while (1); - DPRINT("\n"); - - if (!len) { - return -1; - } - - /* Add descriptor to the used ring. */ - used->ring[u_index].id = d_index; - used->ring[u_index].len = len; - vubr_log_write(dev, - log_guest_addr + offsetof(struct vring_used, ring[u_index]), - sizeof(used->ring[u_index])); - - vubr_consume_raw_packet(dev, buf, len); - - return 0; -} - -static void -vubr_process_avail(VubrDev *dev, VubrVirtq *vq) -{ - struct vring_avail *avail = vq->avail; - struct vring_used *used = vq->used; - uint64_t log_guest_addr = vq->log_guest_addr; - - while (vq->last_avail_index != atomic_mb_read(&avail->idx)) { - vubr_process_desc(dev, vq); - vq->last_avail_index++; - vq->last_used_index++; - } - - atomic_mb_set(&used->idx, vq->last_used_index); - vubr_log_write(dev, - log_guest_addr + offsetof(struct vring_used, idx), - sizeof(used->idx)); -} - -static void -vubr_backend_recv_cb(int sock, void *ctx) -{ - VubrDev *dev = (VubrDev *) ctx; - VubrVirtq *rx_vq = &dev->vq[0]; - uint8_t buf[4096]; - struct virtio_net_hdr_v1 *hdr = (struct virtio_net_hdr_v1 *)buf; - int hdrlen = dev->hdrlen; - int buflen = sizeof(buf); - int len; - - if (!dev->ready) { - return; - } - - DPRINT("\n\n *** IN UDP RECEIVE CALLBACK ***\n\n"); - DPRINT(" hdrlen = %d\n", hdrlen); - - uint16_t avail_index = atomic_mb_read(&rx_vq->avail->idx); - - /* If there is no available descriptors, just do nothing. - * The buffer will be handled by next arrived UDP packet, - * or next kick on receive virtq. */ - if (rx_vq->last_avail_index == avail_index) { - DPRINT("Got UDP packet, but no available descriptors on RX virtq.\n"); - return; - } - - memset(buf, 0, hdrlen); - /* TODO: support mergeable buffers. */ - if (hdrlen == 12) - hdr->num_buffers = 1; - len = vubr_backend_udp_recvbuf(dev, buf + hdrlen, buflen - hdrlen); - - vubr_post_buffer(dev, rx_vq, buf, len + hdrlen); -} - -static void -vubr_kick_cb(int sock, void *ctx) -{ - VubrDev *dev = (VubrDev *) ctx; - eventfd_t kick_data; - ssize_t rc; - - rc = eventfd_read(sock, &kick_data); - if (rc == -1) { - vubr_die("eventfd_read()"); - } else { - DPRINT("Got kick_data: %016"PRIx64"\n", kick_data); - vubr_process_avail(dev, &dev->vq[1]); - } -} - -static int -vubr_none_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - DPRINT("Function %s() not implemented yet.\n", __func__); - return 0; -} - -static int -vubr_get_features_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - vmsg->payload.u64 = - ((1ULL << VIRTIO_NET_F_MRG_RXBUF) | - (1ULL << VHOST_F_LOG_ALL) | - (1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE) | - (1ULL << VHOST_USER_F_PROTOCOL_FEATURES)); - - vmsg->size = sizeof(vmsg->payload.u64); - - DPRINT("Sending back to guest u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - - /* Reply */ - return 1; -} - -static int -vubr_set_features_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - - dev->features = vmsg->payload.u64; - if ((dev->features & (1ULL << VIRTIO_F_VERSION_1)) || - (dev->features & (1ULL << VIRTIO_NET_F_MRG_RXBUF))) { - dev->hdrlen = 12; - } else { - dev->hdrlen = 10; - } - - return 0; -} - -static int -vubr_set_owner_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - return 0; -} - -static void -vubr_close_log(VubrDev *dev) -{ - if (dev->log_table) { - if (munmap(dev->log_table, dev->log_size) != 0) { - vubr_die("munmap()"); - } - - dev->log_table = 0; - } - if (dev->log_call_fd != -1) { - close(dev->log_call_fd); - dev->log_call_fd = -1; - } -} - -static int -vubr_reset_device_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - vubr_close_log(dev); - dev->ready = 0; - dev->features = 0; - return 0; -} - -static int -vubr_set_mem_table_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - int i; - VhostUserMemory *memory = &vmsg->payload.memory; - dev->nregions = memory->nregions; - - DPRINT("Nregions: %d\n", memory->nregions); - for (i = 0; i < dev->nregions; i++) { - void *mmap_addr; - VhostUserMemoryRegion *msg_region = &memory->regions[i]; - VubrDevRegion *dev_region = &dev->regions[i]; - - DPRINT("Region %d\n", i); - DPRINT(" guest_phys_addr: 0x%016"PRIx64"\n", - msg_region->guest_phys_addr); - DPRINT(" memory_size: 0x%016"PRIx64"\n", - msg_region->memory_size); - DPRINT(" userspace_addr 0x%016"PRIx64"\n", - msg_region->userspace_addr); - DPRINT(" mmap_offset 0x%016"PRIx64"\n", - msg_region->mmap_offset); - - dev_region->gpa = msg_region->guest_phys_addr; - dev_region->size = msg_region->memory_size; - dev_region->qva = msg_region->userspace_addr; - dev_region->mmap_offset = msg_region->mmap_offset; - - /* We don't use offset argument of mmap() since the - * mapped address has to be page aligned, and we use huge - * pages. */ - mmap_addr = mmap(0, dev_region->size + dev_region->mmap_offset, - PROT_READ | PROT_WRITE, MAP_SHARED, - vmsg->fds[i], 0); - - if (mmap_addr == MAP_FAILED) { - vubr_die("mmap"); - } - dev_region->mmap_addr = (uint64_t)(uintptr_t)mmap_addr; - DPRINT(" mmap_addr: 0x%016"PRIx64"\n", dev_region->mmap_addr); - - close(vmsg->fds[i]); - } - - return 0; -} - -static int -vubr_set_log_base_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - int fd; - uint64_t log_mmap_size, log_mmap_offset; - void *rc; - - assert(vmsg->fd_num == 1); - fd = vmsg->fds[0]; - - assert(vmsg->size == sizeof(vmsg->payload.log)); - log_mmap_offset = vmsg->payload.log.mmap_offset; - log_mmap_size = vmsg->payload.log.mmap_size; - DPRINT("Log mmap_offset: %"PRId64"\n", log_mmap_offset); - DPRINT("Log mmap_size: %"PRId64"\n", log_mmap_size); - - rc = mmap(0, log_mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, - log_mmap_offset); - if (rc == MAP_FAILED) { - vubr_die("mmap"); - } - dev->log_table = rc; - dev->log_size = log_mmap_size; - - vmsg->size = sizeof(vmsg->payload.u64); - /* Reply */ - return 1; -} - -static int -vubr_set_log_fd_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - assert(vmsg->fd_num == 1); - dev->log_call_fd = vmsg->fds[0]; - DPRINT("Got log_call_fd: %d\n", vmsg->fds[0]); - return 0; -} - -static int -vubr_set_vring_num_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - unsigned int index = vmsg->payload.state.index; - unsigned int num = vmsg->payload.state.num; - - DPRINT("State.index: %d\n", index); - DPRINT("State.num: %d\n", num); - dev->vq[index].size = num; - return 0; -} - -static int -vubr_set_vring_addr_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - struct vhost_vring_addr *vra = &vmsg->payload.addr; - unsigned int index = vra->index; - VubrVirtq *vq = &dev->vq[index]; - - DPRINT("vhost_vring_addr:\n"); - DPRINT(" index: %d\n", vra->index); - DPRINT(" flags: %d\n", vra->flags); - DPRINT(" desc_user_addr: 0x%016llx\n", vra->desc_user_addr); - DPRINT(" used_user_addr: 0x%016llx\n", vra->used_user_addr); - DPRINT(" avail_user_addr: 0x%016llx\n", vra->avail_user_addr); - DPRINT(" log_guest_addr: 0x%016llx\n", vra->log_guest_addr); - - vq->desc = (struct vring_desc *)(uintptr_t)qva_to_va(dev, vra->desc_user_addr); - vq->used = (struct vring_used *)(uintptr_t)qva_to_va(dev, vra->used_user_addr); - vq->avail = (struct vring_avail *)(uintptr_t)qva_to_va(dev, vra->avail_user_addr); - vq->log_guest_addr = vra->log_guest_addr; - - DPRINT("Setting virtq addresses:\n"); - DPRINT(" vring_desc at %p\n", vq->desc); - DPRINT(" vring_used at %p\n", vq->used); - DPRINT(" vring_avail at %p\n", vq->avail); - - vq->last_used_index = vq->used->idx; - return 0; -} - -static int -vubr_set_vring_base_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - unsigned int index = vmsg->payload.state.index; - unsigned int num = vmsg->payload.state.num; - - DPRINT("State.index: %d\n", index); - DPRINT("State.num: %d\n", num); - dev->vq[index].last_avail_index = num; - - return 0; -} - -static int -vubr_get_vring_base_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - unsigned int index = vmsg->payload.state.index; - - DPRINT("State.index: %d\n", index); - vmsg->payload.state.num = dev->vq[index].last_avail_index; - vmsg->size = sizeof(vmsg->payload.state); - /* FIXME: this is a work-around for a bug in QEMU enabling - * too early vrings. When protocol features are enabled, - * we have to respect * VHOST_USER_SET_VRING_ENABLE request. */ - dev->ready = 0; - - if (dev->vq[index].call_fd != -1) { - close(dev->vq[index].call_fd); - dispatcher_remove(&dev->dispatcher, dev->vq[index].call_fd); - dev->vq[index].call_fd = -1; - } - if (dev->vq[index].kick_fd != -1) { - close(dev->vq[index].kick_fd); - dispatcher_remove(&dev->dispatcher, dev->vq[index].kick_fd); - dev->vq[index].kick_fd = -1; - } - - /* Reply */ - return 1; -} - -static int -vubr_set_vring_kick_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - uint64_t u64_arg = vmsg->payload.u64; - int index = u64_arg & VHOST_USER_VRING_IDX_MASK; - - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - - assert((u64_arg & VHOST_USER_VRING_NOFD_MASK) == 0); - assert(vmsg->fd_num == 1); - - if (dev->vq[index].kick_fd != -1) { - close(dev->vq[index].kick_fd); - dispatcher_remove(&dev->dispatcher, dev->vq[index].kick_fd); - } - dev->vq[index].kick_fd = vmsg->fds[0]; - DPRINT("Got kick_fd: %d for vq: %d\n", vmsg->fds[0], index); - - if (index % 2 == 1) { - /* TX queue. */ - dispatcher_add(&dev->dispatcher, dev->vq[index].kick_fd, - dev, vubr_kick_cb); - - DPRINT("Waiting for kicks on fd: %d for vq: %d\n", - dev->vq[index].kick_fd, index); - } - /* We temporarily use this hack to determine that both TX and RX - * queues are set up and ready for processing. - * FIXME: we need to rely in VHOST_USER_SET_VRING_ENABLE and - * actual kicks. */ - if (dev->vq[0].kick_fd != -1 && - dev->vq[1].kick_fd != -1) { - dev->ready = 1; - DPRINT("vhost-user-bridge is ready for processing queues.\n"); - } - return 0; - -} - -static int -vubr_set_vring_call_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - uint64_t u64_arg = vmsg->payload.u64; - int index = u64_arg & VHOST_USER_VRING_IDX_MASK; - - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - assert((u64_arg & VHOST_USER_VRING_NOFD_MASK) == 0); - assert(vmsg->fd_num == 1); - - if (dev->vq[index].call_fd != -1) { - close(dev->vq[index].call_fd); - dispatcher_remove(&dev->dispatcher, dev->vq[index].call_fd); - } - dev->vq[index].call_fd = vmsg->fds[0]; - DPRINT("Got call_fd: %d for vq: %d\n", vmsg->fds[0], index); - - return 0; -} - -static int -vubr_set_vring_err_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - return 0; -} - -static int -vubr_get_protocol_features_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - vmsg->payload.u64 = 1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD; - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - vmsg->size = sizeof(vmsg->payload.u64); - - /* Reply */ - return 1; -} - -static int -vubr_set_protocol_features_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - /* FIXME: unimplented */ - DPRINT("u64: 0x%016"PRIx64"\n", vmsg->payload.u64); - return 0; -} - -static int -vubr_get_queue_num_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - DPRINT("Function %s() not implemented yet.\n", __func__); - return 0; -} - -static int -vubr_set_vring_enable_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - unsigned int index = vmsg->payload.state.index; - unsigned int enable = vmsg->payload.state.num; - - DPRINT("State.index: %d\n", index); - DPRINT("State.enable: %d\n", enable); - dev->vq[index].enable = enable; - return 0; -} - -static int -vubr_send_rarp_exec(VubrDev *dev, VhostUserMsg *vmsg) -{ - DPRINT("Function %s() not implemented yet.\n", __func__); - return 0; -} - -static int -vubr_execute_request(VubrDev *dev, VhostUserMsg *vmsg) -{ - /* Print out generic part of the request. */ - DPRINT( - "================== Vhost user message from QEMU ==================\n"); - DPRINT("Request: %s (%d)\n", vubr_request_str[vmsg->request], - vmsg->request); - DPRINT("Flags: 0x%x\n", vmsg->flags); - DPRINT("Size: %d\n", vmsg->size); - - if (vmsg->fd_num) { - int i; - DPRINT("Fds:"); - for (i = 0; i < vmsg->fd_num; i++) { - DPRINT(" %d", vmsg->fds[i]); - } - DPRINT("\n"); - } - - switch (vmsg->request) { - case VHOST_USER_NONE: - return vubr_none_exec(dev, vmsg); - case VHOST_USER_GET_FEATURES: - return vubr_get_features_exec(dev, vmsg); - case VHOST_USER_SET_FEATURES: - return vubr_set_features_exec(dev, vmsg); - case VHOST_USER_SET_OWNER: - return vubr_set_owner_exec(dev, vmsg); - case VHOST_USER_RESET_OWNER: - return vubr_reset_device_exec(dev, vmsg); - case VHOST_USER_SET_MEM_TABLE: - return vubr_set_mem_table_exec(dev, vmsg); - case VHOST_USER_SET_LOG_BASE: - return vubr_set_log_base_exec(dev, vmsg); - case VHOST_USER_SET_LOG_FD: - return vubr_set_log_fd_exec(dev, vmsg); - case VHOST_USER_SET_VRING_NUM: - return vubr_set_vring_num_exec(dev, vmsg); - case VHOST_USER_SET_VRING_ADDR: - return vubr_set_vring_addr_exec(dev, vmsg); - case VHOST_USER_SET_VRING_BASE: - return vubr_set_vring_base_exec(dev, vmsg); - case VHOST_USER_GET_VRING_BASE: - return vubr_get_vring_base_exec(dev, vmsg); - case VHOST_USER_SET_VRING_KICK: - return vubr_set_vring_kick_exec(dev, vmsg); - case VHOST_USER_SET_VRING_CALL: - return vubr_set_vring_call_exec(dev, vmsg); - case VHOST_USER_SET_VRING_ERR: - return vubr_set_vring_err_exec(dev, vmsg); - case VHOST_USER_GET_PROTOCOL_FEATURES: - return vubr_get_protocol_features_exec(dev, vmsg); - case VHOST_USER_SET_PROTOCOL_FEATURES: - return vubr_set_protocol_features_exec(dev, vmsg); - case VHOST_USER_GET_QUEUE_NUM: - return vubr_get_queue_num_exec(dev, vmsg); - case VHOST_USER_SET_VRING_ENABLE: - return vubr_set_vring_enable_exec(dev, vmsg); - case VHOST_USER_SEND_RARP: - return vubr_send_rarp_exec(dev, vmsg); - - case VHOST_USER_MAX: - assert(vmsg->request != VHOST_USER_MAX); - } - return 0; -} - -static void -vubr_receive_cb(int sock, void *ctx) -{ - VubrDev *dev = (VubrDev *) ctx; - VhostUserMsg vmsg; - int reply_requested; - - vubr_message_read(sock, &vmsg); - reply_requested = vubr_execute_request(dev, &vmsg); - if (reply_requested) { - /* Set the version in the flags when sending the reply */ - vmsg.flags &= ~VHOST_USER_VERSION_MASK; - vmsg.flags |= VHOST_USER_VERSION; - vmsg.flags |= VHOST_USER_REPLY_MASK; - vubr_message_write(sock, &vmsg); - } -} - -static void -vubr_accept_cb(int sock, void *ctx) -{ - VubrDev *dev = (VubrDev *)ctx; - int conn_fd; - struct sockaddr_un un; - socklen_t len = sizeof(un); - - conn_fd = accept(sock, (struct sockaddr *) &un, &len); - if (conn_fd == -1) { - vubr_die("accept()"); - } - DPRINT("Got connection from remote peer on sock %d\n", conn_fd); - dispatcher_add(&dev->dispatcher, conn_fd, ctx, vubr_receive_cb); -} - -static VubrDev * -vubr_new(const char *path, bool client) -{ - VubrDev *dev = (VubrDev *) calloc(1, sizeof(VubrDev)); - dev->nregions = 0; - int i; - struct sockaddr_un un; - CallbackFunc cb; - size_t len; - - for (i = 0; i < MAX_NR_VIRTQUEUE; i++) { - dev->vq[i] = (VubrVirtq) { - .call_fd = -1, .kick_fd = -1, - .size = 0, - .last_avail_index = 0, .last_used_index = 0, - .desc = 0, .avail = 0, .used = 0, - .enable = 0, - }; - } - - /* Init log */ - dev->log_call_fd = -1; - dev->log_size = 0; - dev->log_table = 0; - dev->ready = 0; - dev->features = 0; - - /* Get a UNIX socket. */ - dev->sock = socket(AF_UNIX, SOCK_STREAM, 0); - if (dev->sock == -1) { - vubr_die("socket"); - } - - un.sun_family = AF_UNIX; - strcpy(un.sun_path, path); - len = sizeof(un.sun_family) + strlen(path); - - if (!client) { - unlink(path); - - if (bind(dev->sock, (struct sockaddr *) &un, len) == -1) { - vubr_die("bind"); - } - - if (listen(dev->sock, 1) == -1) { - vubr_die("listen"); - } - cb = vubr_accept_cb; - } else { - if (connect(dev->sock, (struct sockaddr *)&un, len) == -1) { - vubr_die("connect"); - } - cb = vubr_receive_cb; - } - - dispatcher_init(&dev->dispatcher); - dispatcher_add(&dev->dispatcher, dev->sock, (void *)dev, cb); - - DPRINT("Waiting for connections on UNIX socket %s ...\n", path); - return dev; -} - -static void -vubr_set_host(struct sockaddr_in *saddr, const char *host) -{ - if (isdigit(host[0])) { - if (!inet_aton(host, &saddr->sin_addr)) { - fprintf(stderr, "inet_aton() failed.\n"); - exit(1); - } - } else { - struct hostent *he = gethostbyname(host); - - if (!he) { - fprintf(stderr, "gethostbyname() failed.\n"); - exit(1); - } - saddr->sin_addr = *(struct in_addr *)he->h_addr; - } -} - -static void -vubr_backend_udp_setup(VubrDev *dev, - const char *local_host, - const char *local_port, - const char *remote_host, - const char *remote_port) -{ - int sock; - const char *r; - - int lport, rport; - - lport = strtol(local_port, (char **)&r, 0); - if (r == local_port) { - fprintf(stderr, "lport parsing failed.\n"); - exit(1); - } - - rport = strtol(remote_port, (char **)&r, 0); - if (r == remote_port) { - fprintf(stderr, "rport parsing failed.\n"); - exit(1); - } - - struct sockaddr_in si_local = { - .sin_family = AF_INET, - .sin_port = htons(lport), - }; - - vubr_set_host(&si_local, local_host); - - /* setup destination for sends */ - dev->backend_udp_dest = (struct sockaddr_in) { - .sin_family = AF_INET, - .sin_port = htons(rport), - }; - vubr_set_host(&dev->backend_udp_dest, remote_host); - - sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (sock == -1) { - vubr_die("socket"); - } - - if (bind(sock, (struct sockaddr *)&si_local, sizeof(si_local)) == -1) { - vubr_die("bind"); - } - - dev->backend_udp_sock = sock; - dispatcher_add(&dev->dispatcher, sock, dev, vubr_backend_recv_cb); - DPRINT("Waiting for data from udp backend on %s:%d...\n", - local_host, lport); -} - -static void -vubr_run(VubrDev *dev) -{ - while (1) { - /* timeout 200ms */ - dispatcher_wait(&dev->dispatcher, 200000); - /* Here one can try polling strategy. */ - } -} - -static int -vubr_parse_host_port(const char **host, const char **port, const char *buf) -{ - char *p = strchr(buf, ':'); - - if (!p) { - return -1; - } - *p = '\0'; - *host = strdup(buf); - *port = strdup(p + 1); - return 0; -} - -#define DEFAULT_UD_SOCKET "/tmp/vubr.sock" -#define DEFAULT_LHOST "127.0.0.1" -#define DEFAULT_LPORT "4444" -#define DEFAULT_RHOST "127.0.0.1" -#define DEFAULT_RPORT "5555" - -static const char *ud_socket_path = DEFAULT_UD_SOCKET; -static const char *lhost = DEFAULT_LHOST; -static const char *lport = DEFAULT_LPORT; -static const char *rhost = DEFAULT_RHOST; -static const char *rport = DEFAULT_RPORT; - -int -main(int argc, char *argv[]) -{ - VubrDev *dev; - int opt; - bool client = false; - - while ((opt = getopt(argc, argv, "l:r:u:c")) != -1) { - - switch (opt) { - case 'l': - if (vubr_parse_host_port(&lhost, &lport, optarg) < 0) { - goto out; - } - break; - case 'r': - if (vubr_parse_host_port(&rhost, &rport, optarg) < 0) { - goto out; - } - break; - case 'u': - ud_socket_path = strdup(optarg); - break; - case 'c': - client = true; - break; - default: - goto out; - } - } - - DPRINT("ud socket: %s (%s)\n", ud_socket_path, - client ? "client" : "server"); - DPRINT("local: %s:%s\n", lhost, lport); - DPRINT("remote: %s:%s\n", rhost, rport); - - dev = vubr_new(ud_socket_path, client); - if (!dev) { - return 1; - } - - vubr_backend_udp_setup(dev, lhost, lport, rhost, rport); - vubr_run(dev); - return 0; - -out: - fprintf(stderr, "Usage: %s ", argv[0]); - fprintf(stderr, "[-u ud_socket_path] [-l lhost:lport] [-r rhost:rport]\n"); - fprintf(stderr, "\t-u path to unix doman socket. default: %s\n", - DEFAULT_UD_SOCKET); - fprintf(stderr, "\t-l local host and port. default: %s:%s\n", - DEFAULT_LHOST, DEFAULT_LPORT); - fprintf(stderr, "\t-r remote host and port. default: %s:%s\n", - DEFAULT_RHOST, DEFAULT_RPORT); - - return 1; -} diff --git a/tests/vhost-user-test.c.orig b/tests/vhost-user-test.c.orig deleted file mode 100644 index b491e6fcb65..00000000000 --- a/tests/vhost-user-test.c.orig +++ /dev/null @@ -1,364 +0,0 @@ -/* - * QTest testcase for the vhost-user - * - * Copyright (c) 2014 Virtual Open Systems Sarl. - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - */ - -#include - -#include "libqtest.h" -#include "qemu/option.h" -#include "sysemu/char.h" -#include "sysemu/sysemu.h" - -#include -#include -#include -#include - -/* GLIB version compatibility flags */ -#if !GLIB_CHECK_VERSION(2, 26, 0) -#define G_TIME_SPAN_SECOND (G_GINT64_CONSTANT(1000000)) -#endif - -#if GLIB_CHECK_VERSION(2, 28, 0) -#define HAVE_MONOTONIC_TIME -#endif - -#define QEMU_CMD_ACCEL " -machine accel=tcg" -#define QEMU_CMD_MEM " -m 512 -object memory-backend-file,id=mem,size=512M,"\ - "mem-path=%s,share=on -numa node,memdev=mem" -#define QEMU_CMD_CHR " -chardev socket,id=chr0,path=%s" -#define QEMU_CMD_NETDEV " -netdev vhost-user,id=net0,chardev=chr0,vhostforce" -#define QEMU_CMD_NET " -device virtio-net-pci,netdev=net0 " -#define QEMU_CMD_ROM " -option-rom ../pc-bios/pxe-virtio.rom" - -#define QEMU_CMD QEMU_CMD_ACCEL QEMU_CMD_MEM QEMU_CMD_CHR \ - QEMU_CMD_NETDEV QEMU_CMD_NET QEMU_CMD_ROM - -#define HUGETLBFS_MAGIC 0x958458f6 - -/*********** FROM hw/virtio/vhost-user.c *************************************/ - -#define VHOST_MEMORY_MAX_NREGIONS 8 - -#define VHOST_USER_F_PROTOCOL_FEATURES 30 - -typedef enum VhostUserRequest { - VHOST_USER_NONE = 0, - VHOST_USER_GET_FEATURES = 1, - VHOST_USER_SET_FEATURES = 2, - VHOST_USER_SET_OWNER = 3, - VHOST_USER_RESET_DEVICE = 4, - VHOST_USER_SET_MEM_TABLE = 5, - VHOST_USER_SET_LOG_BASE = 6, - VHOST_USER_SET_LOG_FD = 7, - VHOST_USER_SET_VRING_NUM = 8, - VHOST_USER_SET_VRING_ADDR = 9, - VHOST_USER_SET_VRING_BASE = 10, - VHOST_USER_GET_VRING_BASE = 11, - VHOST_USER_SET_VRING_KICK = 12, - VHOST_USER_SET_VRING_CALL = 13, - VHOST_USER_SET_VRING_ERR = 14, - VHOST_USER_GET_PROTOCOL_FEATURES = 15, - VHOST_USER_SET_PROTOCOL_FEATURES = 16, - VHOST_USER_MAX -} VhostUserRequest; - -typedef struct VhostUserMemoryRegion { - uint64_t guest_phys_addr; - uint64_t memory_size; - uint64_t userspace_addr; - uint64_t mmap_offset; -} VhostUserMemoryRegion; - -typedef struct VhostUserMemory { - uint32_t nregions; - uint32_t padding; - VhostUserMemoryRegion regions[VHOST_MEMORY_MAX_NREGIONS]; -} VhostUserMemory; - -typedef struct VhostUserMsg { - VhostUserRequest request; - -#define VHOST_USER_VERSION_MASK (0x3) -#define VHOST_USER_REPLY_MASK (0x1<<2) - uint32_t flags; - uint32_t size; /* the following payload size */ - union { - uint64_t u64; - struct vhost_vring_state state; - struct vhost_vring_addr addr; - VhostUserMemory memory; - }; -} QEMU_PACKED VhostUserMsg; - -static VhostUserMsg m __attribute__ ((unused)); -#define VHOST_USER_HDR_SIZE (sizeof(m.request) \ - + sizeof(m.flags) \ - + sizeof(m.size)) - -#define VHOST_USER_PAYLOAD_SIZE (sizeof(m) - VHOST_USER_HDR_SIZE) - -/* The version of the protocol we support */ -#define VHOST_USER_VERSION (0x1) -/*****************************************************************************/ - -int fds_num = 0, fds[VHOST_MEMORY_MAX_NREGIONS]; -static VhostUserMemory memory; -static CompatGMutex data_mutex; -static CompatGCond data_cond; - -#if !GLIB_CHECK_VERSION(2, 32, 0) -static gboolean g_cond_wait_until(CompatGCond cond, CompatGMutex mutex, - gint64 end_time) -{ - gboolean ret = FALSE; - end_time -= g_get_monotonic_time(); - GTimeVal time = { end_time / G_TIME_SPAN_SECOND, - end_time % G_TIME_SPAN_SECOND }; - ret = g_cond_timed_wait(cond, mutex, &time); - return ret; -} -#endif - -static void wait_for_fds(void) -{ - gint64 end_time; - - g_mutex_lock(&data_mutex); - end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; - while (!fds_num) { - if (!g_cond_wait_until(&data_cond, &data_mutex, end_time)) { - /* timeout has passed */ - g_assert(fds_num); - break; - } - } - - /* check for sanity */ - g_assert_cmpint(fds_num, >, 0); - g_assert_cmpint(fds_num, ==, memory.nregions); - - g_mutex_unlock(&data_mutex); -} - -static void read_guest_mem(void) -{ - uint32_t *guest_mem; - int i, j; - size_t size; - - wait_for_fds(); - - /* iterate all regions */ - for (i = 0; i < fds_num; i++) { - - /* We'll check only the region statring at 0x0*/ - if (memory.regions[i].guest_phys_addr != 0x0) { - continue; - } - - g_assert_cmpint(memory.regions[i].memory_size, >, 1024); - - size = memory.regions[i].memory_size + memory.regions[i].mmap_offset; - - guest_mem = mmap(0, size, PROT_READ | PROT_WRITE, - MAP_SHARED, fds[i], 0); - - g_assert(guest_mem != MAP_FAILED); - guest_mem += (memory.regions[i].mmap_offset / sizeof(*guest_mem)); - - for (j = 0; j < 256; j++) { - uint32_t a = readl(memory.regions[i].guest_phys_addr + j*4); - uint32_t b = guest_mem[j]; - - g_assert_cmpint(a, ==, b); - } - - munmap(guest_mem, memory.regions[i].memory_size); - } - - g_mutex_unlock(&data_mutex); -} - -static void *thread_function(void *data) -{ - GMainLoop *loop; - loop = g_main_loop_new(NULL, FALSE); - g_main_loop_run(loop); - return NULL; -} - -static int chr_can_read(void *opaque) -{ - return VHOST_USER_HDR_SIZE; -} - -static void chr_read(void *opaque, const uint8_t *buf, int size) -{ - CharDriverState *chr = opaque; - VhostUserMsg msg; - uint8_t *p = (uint8_t *) &msg; - int fd; - - if (size != VHOST_USER_HDR_SIZE) { - g_test_message("Wrong message size received %d\n", size); - return; - } - - g_mutex_lock(&data_mutex); - memcpy(p, buf, VHOST_USER_HDR_SIZE); - - if (msg.size) { - p += VHOST_USER_HDR_SIZE; - qemu_chr_fe_read_all(chr, p, msg.size); - } - - switch (msg.request) { - case VHOST_USER_GET_FEATURES: - /* send back features to qemu */ - msg.flags |= VHOST_USER_REPLY_MASK; - msg.size = sizeof(m.u64); - msg.u64 = 0x1ULL << VHOST_USER_F_PROTOCOL_FEATURES; - p = (uint8_t *) &msg; - qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE + msg.size); - break; - - case VHOST_USER_SET_FEATURES: - g_assert_cmpint(msg.u64 & (0x1ULL << VHOST_USER_F_PROTOCOL_FEATURES), - !=, 0ULL); - break; - - case VHOST_USER_GET_PROTOCOL_FEATURES: - /* send back features to qemu */ - msg.flags |= VHOST_USER_REPLY_MASK; - msg.size = sizeof(m.u64); - msg.u64 = 0; - p = (uint8_t *) &msg; - qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE + msg.size); - break; - - case VHOST_USER_GET_VRING_BASE: - /* send back vring base to qemu */ - msg.flags |= VHOST_USER_REPLY_MASK; - msg.size = sizeof(m.state); - msg.state.num = 0; - p = (uint8_t *) &msg; - qemu_chr_fe_write_all(chr, p, VHOST_USER_HDR_SIZE + msg.size); - break; - - case VHOST_USER_SET_MEM_TABLE: - /* received the mem table */ - memcpy(&memory, &msg.memory, sizeof(msg.memory)); - fds_num = qemu_chr_fe_get_msgfds(chr, fds, sizeof(fds) / sizeof(int)); - - /* signal the test that it can continue */ - g_cond_signal(&data_cond); - break; - - case VHOST_USER_SET_VRING_KICK: - case VHOST_USER_SET_VRING_CALL: - /* consume the fd */ - qemu_chr_fe_get_msgfds(chr, &fd, 1); - /* - * This is a non-blocking eventfd. - * The receive function forces it to be blocking, - * so revert it back to non-blocking. - */ - qemu_set_nonblock(fd); - break; - default: - break; - } - g_mutex_unlock(&data_mutex); -} - -static const char *init_hugepagefs(void) -{ - const char *path; - struct statfs fs; - int ret; - - path = getenv("QTEST_HUGETLBFS_PATH"); - if (!path) { - path = "/hugetlbfs"; - } - - if (access(path, R_OK | W_OK | X_OK)) { - g_test_message("access on path (%s): %s\n", path, strerror(errno)); - return NULL; - } - - do { - ret = statfs(path, &fs); - } while (ret != 0 && errno == EINTR); - - if (ret != 0) { - g_test_message("statfs on path (%s): %s\n", path, strerror(errno)); - return NULL; - } - - if (fs.f_type != HUGETLBFS_MAGIC) { - g_test_message("Warning: path not on HugeTLBFS: %s\n", path); - return NULL; - } - - return path; -} - -int main(int argc, char **argv) -{ - QTestState *s = NULL; - CharDriverState *chr = NULL; - const char *hugefs = 0; - char *socket_path = 0; - char *qemu_cmd = 0; - char *chr_path = 0; - int ret; - - g_test_init(&argc, &argv, NULL); - - module_call_init(MODULE_INIT_QOM); - - hugefs = init_hugepagefs(); - if (!hugefs) { - return 0; - } - - socket_path = g_strdup_printf("/tmp/vhost-%d.sock", getpid()); - - /* create char dev and add read handlers */ - qemu_add_opts(&qemu_chardev_opts); - chr_path = g_strdup_printf("unix:%s,server,nowait", socket_path); - chr = qemu_chr_new("chr0", chr_path, NULL); - g_free(chr_path); - qemu_chr_add_handlers(chr, chr_can_read, chr_read, NULL, chr); - - /* run the main loop thread so the chardev may operate */ - g_mutex_init(&data_mutex); - g_cond_init(&data_cond); - g_thread_new(NULL, thread_function, NULL); - - qemu_cmd = g_strdup_printf(QEMU_CMD, hugefs, socket_path); - s = qtest_start(qemu_cmd); - g_free(qemu_cmd); - - qtest_add_func("/vhost-user/read-guest-mem", read_guest_mem); - - ret = g_test_run(); - - if (s) { - qtest_quit(s); - } - - /* cleanup */ - unlink(socket_path); - g_free(socket_path); - - return ret; -} -- 2.39.5