[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 23/51] nvdimm acpi: introduce patched dsm memory
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 23/51] nvdimm acpi: introduce patched dsm memory |
Date: |
Tue, 15 Mar 2016 17:01:36 +0200 |
From: Xiao Guangrong <address@hidden>
The dsm memory is used to save the input parameters and store
the dsm result which is filled by QEMU.
The address of dsm memory is decided by bios and patched into
int32 object named "MEMA"
Signed-off-by: Xiao Guangrong <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/acpi/nvdimm.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index 8568b20..90032e5 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -29,6 +29,7 @@
#include "qemu/osdep.h"
#include "hw/acpi/acpi.h"
#include "hw/acpi/aml-build.h"
+#include "hw/acpi/bios-linker-loader.h"
#include "hw/nvram/fw_cfg.h"
#include "hw/mem/nvdimm.h"
@@ -406,6 +407,7 @@ void nvdimm_init_acpi_state(AcpiNVDIMMState *state,
MemoryRegion *io,
}
#define NVDIMM_COMMON_DSM "NCAL"
+#define NVDIMM_ACPI_MEM_ADDR "MEMA"
static void nvdimm_build_common_dsm(Aml *dev)
{
@@ -471,6 +473,7 @@ static void nvdimm_build_ssdt(GSList *device_list, GArray
*table_offsets,
GArray *table_data, GArray *linker)
{
Aml *ssdt, *sb_scope, *dev;
+ int mem_addr_offset, nvdimm_ssdt;
acpi_add_table(table_offsets, table_data);
@@ -500,13 +503,24 @@ static void nvdimm_build_ssdt(GSList *device_list, GArray
*table_offsets,
nvdimm_build_nvdimm_devices(device_list, dev);
aml_append(sb_scope, dev);
-
aml_append(ssdt, sb_scope);
+
+ nvdimm_ssdt = table_data->len;
+
/* copy AML table into ACPI tables blob and patch header there */
g_array_append_vals(table_data, ssdt->buf->data, ssdt->buf->len);
+ mem_addr_offset = build_append_named_dword(table_data,
+ NVDIMM_ACPI_MEM_ADDR);
+
+ bios_linker_loader_alloc(linker, NVDIMM_DSM_MEM_FILE, TARGET_PAGE_SIZE,
+ false /* high memory */);
+ bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE,
+ NVDIMM_DSM_MEM_FILE, table_data,
+ table_data->data + mem_addr_offset,
+ sizeof(uint32_t));
build_header(linker, table_data,
- (void *)(table_data->data + table_data->len - ssdt->buf->len),
- "SSDT", ssdt->buf->len, 1, NULL, "NVDIMM");
+ (void *)(table_data->data + nvdimm_ssdt),
+ "SSDT", table_data->len - nvdimm_ssdt, 1, NULL, "NVDIMM");
free_aml_allocator();
}
--
MST
- [Qemu-devel] [PULL v2 15/51] i386: update expected DSDT, (continued)
- [Qemu-devel] [PULL v2 15/51] i386: update expected DSDT, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 14/51] i386: populate floppy drive information in DSDT, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 16/51] virtio-pci: call pci reset variant when guest requests reset., Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 18/51] ich9lpc: fix typo, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 19/51] hw/acpi: fix Q35 support for legacy Windows OS, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 20/51] acpi-test-data: add _DIS methods, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 17/51] msi_supported -> msi_nonbroken, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 21/51] pci-ids: add virtio 1.0 ids to spec, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 22/51] nvdimm acpi: initialize the resource used by NVDIMM ACPI, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 24/51] nvdimm acpi: let qemu handle _DSM method, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 23/51] nvdimm acpi: introduce patched dsm memory,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 26/51] vhost-user: fix use after free, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 25/51] nvdimm acpi: emulate dsm method, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 29/51] qemu-char: remove all msgfds on disconnect, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 28/51] qemu-char: avoid potential double-free, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 27/51] vhost-user: remove useless is_server field, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 32/51] pc: acpi: remove NOP assignment, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 30/51] qemu-char: make tcp_chr_disconnect() reentrant-safe, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 31/51] pxb: cleanup, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 33/51] pc: init pcms->apic_id_limit once and use it throughout pc.c, Michael S. Tsirkin, 2016/03/15
- [Qemu-devel] [PULL v2 35/51] pc: acpi: cleanup qdev_get_machine() calls, Michael S. Tsirkin, 2016/03/15