aboutsummaryrefslogtreecommitdiff
path: root/hw/acpi
diff options
context:
space:
mode:
authorXiao Guangrong <guangrong.xiao@linux.intel.com>2016-10-29 00:11:49 +0800
committerMichael S. Tsirkin <mst@redhat.com>2016-11-01 19:21:08 +0200
commitd51d1d7edeb869e0010d6b3833bd53ad561ff805 (patch)
tree6a9e01e30cea559a72078b9c6821be3351b7f96a /hw/acpi
parent6034011c7e00e9408e18d42a7fb807a0f12157fc (diff)
acpi nvdimm: fix wrong buffer size returned by DSM method
Currently, 'RLEN' is the totally buffer size written by QEMU and it is ACPI internally used only. The buffer size returned to guest should not include 'RLEN' itself Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/acpi')
-rw-r--r--hw/acpi/nvdimm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index e486128aa1..24a2b3b78a 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -862,7 +862,8 @@ static void nvdimm_build_common_dsm(Aml *dev)
aml_append(method, aml_store(dsm_mem, aml_name("NTFI")));
result_size = aml_local(1);
- aml_append(method, aml_store(aml_name("RLEN"), result_size));
+ /* RLEN is not included in the payload returned to guest. */
+ aml_append(method, aml_subtract(aml_name("RLEN"), aml_int(4), result_size));
aml_append(method, aml_store(aml_shiftleft(result_size, aml_int(3)),
result_size));
aml_append(method, aml_create_field(aml_name("ODAT"), aml_int(0),