[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 23/53] nvdimm acpi: introduce patched dsm memory
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 23/53] nvdimm acpi: introduce patched dsm memory |
Date: |
Fri, 11 Mar 2016 17:08:52 +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 14/53] i386: populate floppy drive information in DSDT, (continued)
- [Qemu-devel] [PULL 14/53] i386: populate floppy drive information in DSDT, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 13/53] fdc: add function to determine drive chs limits, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 15/53] i386: update expected DSDT, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 16/53] virtio-pci: call pci reset variant when guest requests reset., Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 18/53] ich9lpc: fix typo, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 17/53] msi_supported -> msi_nonbroken, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 19/53] hw/acpi: fix Q35 support for legacy Windows OS, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 20/53] acpi-test-data: add _DIS methods, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 21/53] pci-ids: add virtio 1.0 ids to spec, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 22/53] nvdimm acpi: initialize the resource used by NVDIMM ACPI, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 23/53] nvdimm acpi: introduce patched dsm memory,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 24/53] nvdimm acpi: let qemu handle _DSM method, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 25/53] nvdimm acpi: emulate dsm method, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 26/53] vhost-user: fix use after free, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 27/53] vhost-user: remove useless is_server field, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 29/53] qemu-char: remove all msgfds on disconnect, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 28/53] qemu-char: avoid potential double-free, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 31/53] pxb: cleanup, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 30/53] qemu-char: make tcp_chr_disconnect() reentrant-safe, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 32/53] pc: acpi: remove NOP assignment, Michael S. Tsirkin, 2016/03/11
- [Qemu-devel] [PULL 34/53] machine: introduce MachineClass.possible_cpu_arch_ids() hook, Michael S. Tsirkin, 2016/03/11