[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v3 02/19][SeaBIOS] Add SSDT memory device suppor
From: |
Vasilis Liaskovitis |
Subject: |
[Qemu-devel] [RFC PATCH v3 02/19][SeaBIOS] Add SSDT memory device support |
Date: |
Fri, 21 Sep 2012 13:17:18 +0200 |
Define SSDT hotplug-able memory devices in _SB namespace. The dynamically
generated SSDT includes per memory device hotplug methods. These methods
just call methods defined in the DSDT. Also dynamically generate a MTFY
method and a MEON array of the online/available memory devices. ACPI
extraction macros are used to place the AML code in variables later used by
src/acpi. The design is taken from SSDT cpu generation.
Signed-off-by: Vasilis Liaskovitis <address@hidden>
---
Makefile | 2 +-
src/ssdt-mem.dsl | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 66 insertions(+), 1 deletions(-)
create mode 100644 src/ssdt-mem.dsl
diff --git a/Makefile b/Makefile
index 5486f88..e82cfc9 100644
--- a/Makefile
+++ b/Makefile
@@ -233,7 +233,7 @@ $(OUT)%.hex: src/%.dsl ./tools/acpi_extract_preprocess.py
./tools/acpi_extract.p
$(Q)$(PYTHON) ./tools/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off
$(Q)cat $(OUT)$*.off > $@
-$(OUT)ccode32flat.o: $(OUT)acpi-dsdt.hex $(OUT)ssdt-proc.hex
$(OUT)ssdt-pcihp.hex $(OUT)ssdt-susp.hex
+$(OUT)ccode32flat.o: $(OUT)acpi-dsdt.hex $(OUT)ssdt-proc.hex
$(OUT)ssdt-pcihp.hex $(OUT)ssdt-susp.hex $(OUT)ssdt-mem.hex
################ Kconfig rules
diff --git a/src/ssdt-mem.dsl b/src/ssdt-mem.dsl
new file mode 100644
index 0000000..ee322f0
--- /dev/null
+++ b/src/ssdt-mem.dsl
@@ -0,0 +1,65 @@
+/* This file is the basis for the ssdt_mem[] variable in src/acpi.c.
+ * It is similar in design to the ssdt_proc variable.
+ * It defines the contents of the per-cpu Processor() object. At
+ * runtime, a dynamically generated SSDT will contain one copy of this
+ * AML snippet for every possible memory device in the system. The
+ * objects will * be placed in the \_SB_ namespace.
+ *
+ * In addition to the aml code generated from this file, the
+ * src/acpi.c file creates a MEMNTFY method with an entry for each memdevice:
+ * Method(MTFY, 2) {
+ * If (LEqual(Arg0, 0x00)) { Notify(MP00, Arg1) }
+ * If (LEqual(Arg0, 0x01)) { Notify(MP01, Arg1) }
+ * ...
+ * }
+ * and a MEON array with the list of active and inactive memory devices:
+ * Name(MEON, Package() { One, One, ..., Zero, Zero, ... })
+ */
+ACPI_EXTRACT_ALL_CODE ssdm_mem_aml
+
+DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC", "CSSDT", 0x1)
+/* v------------------ DO NOT EDIT ------------------v */
+{
+ ACPI_EXTRACT_DEVICE_START ssdt_mem_start
+ ACPI_EXTRACT_DEVICE_END ssdt_mem_end
+ ACPI_EXTRACT_DEVICE_STRING ssdt_mem_name
+ Device(MPAA) {
+ ACPI_EXTRACT_NAME_BYTE_CONST ssdt_mem_id
+ Name(ID, 0xAA)
+/* ^------------------ DO NOT EDIT ------------------^
+ *
+ * The src/acpi.c code requires the above layout so that it can update
+ * MPAA and 0xAA with the appropriate MEMDEVICE id (see
+ * SD_OFFSET_MEMHEX/MEMID1/MEMID2). Don't change the above without
+ * also updating the C code.
+ */
+ Name(_HID, EISAID("PNP0C80"))
+ Name(_PXM, 0xAA)
+
+ External(CMST, MethodObj)
+ External(MPEJ, MethodObj)
+
+ Name(_CRS, ResourceTemplate() {
+ QwordMemory(
+ ResourceConsumer,
+ ,
+ MinFixed,
+ MaxFixed,
+ Cacheable,
+ ReadWrite,
+ 0x0,
+ 0xDEADBEEF,
+ 0xE6ADBEEE,
+ 0x00000000,
+ 0x08000000,
+ )
+ })
+ Method (_STA, 0) {
+ Return(CMST(ID))
+ }
+ Method (_EJ0, 1, NotSerialized) {
+ MPEJ(ID, Arg0)
+ }
+ }
+}
+
--
1.7.9
- [Qemu-devel] [RFC PATCH v3 00/19] ACPI memory hotplug, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 02/19][SeaBIOS] Add SSDT memory device support,
Vasilis Liaskovitis <=
- [Qemu-devel] [RFC PATCH v3 06/19] Implement "-dimm" command line option, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 01/19][SeaBIOS] Add ACPI_EXTRACT_DEVICE* macros, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 03/19][SeaBIOS] acpi-dsdt: Implement functions for memory hotplug, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 05/19] Implement dimm device abstraction, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 04/19][SeaBIOS] acpi: generate hotplug memory devices, Vasilis Liaskovitis, 2012/09/21
- [Qemu-devel] [RFC PATCH v3 07/19] acpi_piix4: Implement memory device hotplug registers, Vasilis Liaskovitis, 2012/09/21