aboutsummaryrefslogtreecommitdiff
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.zip
qemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.tar.gz
qemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.tar.bz2
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 e486128..24a2b3b 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),