From: Xiao Guangrong Date: Fri, 28 Oct 2016 16:11:49 +0000 (+0800) Subject: acpi nvdimm: fix wrong buffer size returned by DSM method X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d51d1d7edeb869e0010d6b3833bd53ad561ff805;p=qemu.git 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 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- 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),