summaryrefslogtreecommitdiff
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
parent6034011c7e00e9408e18d42a7fb807a0f12157fc (diff)
downloadqemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.tar.gz
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>
-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),