summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Guangrong2016-10-28 18:11:49 +0200
committerMichael S. Tsirkin2016-11-01 18:21:08 +0100
commitd51d1d7edeb869e0010d6b3833bd53ad561ff805 (patch)
tree6a9e01e30cea559a72078b9c6821be3351b7f96a
parentvirtio-crypto: add myself as virtio-crypto and cryptodev backends maintainer (diff)
downloadqemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.tar.gz
qemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.tar.xz
qemu-d51d1d7edeb869e0010d6b3833bd53ad561ff805.zip
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),