From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYDKa-0004Xl-PI for qemu-devel@nongnu.org; Fri, 12 Aug 2016 10:21:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bYDKQ-0001i0-L9 for qemu-devel@nongnu.org; Fri, 12 Aug 2016 10:21:04 -0400 Received: from mga04.intel.com ([192.55.52.120]:25524) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYDKQ-0001g8-Eo for qemu-devel@nongnu.org; Fri, 12 Aug 2016 10:20:54 -0400 From: Xiao Guangrong Date: Fri, 12 Aug 2016 14:54:03 +0800 Message-Id: <1470984850-66891-2-git-send-email-guangrong.xiao@linux.intel.com> In-Reply-To: <1470984850-66891-1-git-send-email-guangrong.xiao@linux.intel.com> References: <1470984850-66891-1-git-send-email-guangrong.xiao@linux.intel.com> Subject: [Qemu-devel] [PATCH v2 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