[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 8/8] nvdimm acpi: add _CRS
From: |
Xiao Guangrong |
Subject: |
[Qemu-devel] [PATCH v3 8/8] nvdimm acpi: add _CRS |
Date: |
Sun, 14 Feb 2016 16:51:05 +0800 |
As Igor suggested that we can report the BIOS patched operation region
so that OSPM could see that particular range is in use and be able to
notice conflicts if it happens some day
Signed-off-by: Xiao Guangrong <address@hidden>
---
hw/acpi/nvdimm.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index d6f067b..a6fbbee 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -566,6 +566,7 @@ static void nvdimm_build_ssdt(GSList *device_list, GArray
*table_offsets,
GArray *table_data, GArray *linker)
{
Aml *ssdt, *sb_scope, *dev, *field, *mem_addr;
+ Aml *min_addr, *max_addr, *mr32, *method, *crs;
uint32_t zero_offset = 0;
int offset;
@@ -591,6 +592,32 @@ static void nvdimm_build_ssdt(GSList *device_list, GArray
*table_offsets,
*/
aml_append(dev, aml_name_decl("_HID", aml_string("ACPI0012")));
+ /*
+ * report the dsm memory so that OSPM could see that particular range is
+ * in use and be able to notice conflicts if it happens some day.
+ */
+ method = aml_method("_CRS", 0, AML_SERIALIZED);
+ crs = aml_resource_template();
+ aml_append(crs, aml_dword_memory(AML_POS_DECODE, AML_MIN_FIXED,
+ AML_MAX_FIXED, AML_CACHEABLE,
+ AML_READ_WRITE,
+ 0, 0x0, 0xFFFFFFFE, 0,
+ TARGET_PAGE_SIZE));
+ aml_append(method, aml_name_decl("MR32", crs));
+ mr32 = aml_name("MR32");
+ aml_append(method, aml_create_dword_field(mr32, aml_int(10), "MIN"));
+ aml_append(method, aml_create_dword_field(mr32, aml_int(14), "MAX"));
+
+ min_addr = aml_name("MIN");
+ max_addr = aml_name("MAX");
+
+ aml_append(method, aml_store(aml_name(NVDIMM_ACPI_MEM_ADDR), min_addr));
+ aml_append(method, aml_add(min_addr, aml_int(TARGET_PAGE_SIZE),
+ max_addr));
+ aml_append(method, aml_decrement(max_addr));
+ aml_append(method, aml_return(mr32));
+ aml_append(dev, method);
+
/* map DSM memory and IO into ACPI namespace. */
aml_append(dev, aml_operation_region("NPIO", AML_SYSTEM_IO,
aml_int(NVDIMM_ACPI_IO_BASE), NVDIMM_ACPI_IO_LEN));
--
1.8.3.1
- [Qemu-devel] [PATCH v3 0/8] NVDIMM ACPI: introduce the framework of QEMU emulated DSM, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 2/8] acpi: add aml_concatenate(), Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 1/8] acpi: add aml_create_field(), Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 7/8] nvdimm acpi: emulate dsm method, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 5/8] nvdimm acpi: introduce patched dsm memory, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 3/8] acpi: allow using object as offset for OperationRegion, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 4/8] nvdimm acpi: initialize the resource used by NVDIMM ACPI, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 6/8] nvdimm acpi: let qemu handle _DSM method, Xiao Guangrong, 2016/02/14
- [Qemu-devel] [PATCH v3 8/8] nvdimm acpi: add _CRS,
Xiao Guangrong <=