From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50854) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bMbhk-0005Gb-0L for qemu-devel@nongnu.org; Mon, 11 Jul 2016 09:57:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bMbhd-0006Uf-Bf for qemu-devel@nongnu.org; Mon, 11 Jul 2016 09:56:59 -0400 Received: from mga02.intel.com ([134.134.136.20]:30874) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bMbhd-0006US-5W for qemu-devel@nongnu.org; Mon, 11 Jul 2016 09:56:53 -0400 From: Xiao Guangrong Date: Mon, 11 Jul 2016 21:45:11 +0800 Message-Id: <1468244718-3731-2-git-send-email-guangrong.xiao@linux.intel.com> In-Reply-To: <1468244718-3731-1-git-send-email-guangrong.xiao@linux.intel.com> References: <1468244718-3731-1-git-send-email-guangrong.xiao@linux.intel.com> Subject: [Qemu-devel] [PATCH 1/8] acpi nvdimm: fix wrong buffer size returned by DSM method List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: pbonzini@redhat.com, imammedo@redhat.com Cc: gleb@kernel.org, mtosatti@redhat.com, stefanha@redhat.com, mst@redhat.com, rth@twiddle.net, ehabkost@redhat.com, dan.j.williams@intel.com, kvm@vger.kernel.org, qemu-devel@nongnu.org, Xiao Guangrong 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 --- hw/acpi/nvdimm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index e486128..5454c0f 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -863,6 +863,8 @@ static void nvdimm_build_common_dsm(Aml *dev) 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(result_size, 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), -- 1.8.3.1