From patchwork Mon Oct 19 00:54:13 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Guangrong X-Patchwork-Id: 7431321 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 024F3BEEA4 for ; Sun, 18 Oct 2015 17:01:13 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2905B20481 for ; Sun, 18 Oct 2015 17:01:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 28B412047D for ; Sun, 18 Oct 2015 17:01:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932190AbbJRRBE (ORCPT ); Sun, 18 Oct 2015 13:01:04 -0400 Received: from mga11.intel.com ([192.55.52.93]:44849 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932281AbbJRRAc (ORCPT ); Sun, 18 Oct 2015 13:00:32 -0400 Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 18 Oct 2015 10:00:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,698,1437462000"; d="scan'208";a="583275972" Received: from xiaoreal1.sh.intel.com (HELO xiaoreal1.sh.intel.com.sh.intel.com) ([10.239.48.79]) by FMSMGA003.fm.intel.com with ESMTP; 18 Oct 2015 10:00:30 -0700 From: Xiao Guangrong 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 Subject: [PATCH v4 27/33] nvdimm acpi: save arg3 for NVDIMM device _DSM method Date: Mon, 19 Oct 2015 08:54:13 +0800 Message-Id: <1445216059-88521-28-git-send-email-guangrong.xiao@linux.intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1445216059-88521-1-git-send-email-guangrong.xiao@linux.intel.com> References: <1445216059-88521-1-git-send-email-guangrong.xiao@linux.intel.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00, DATE_IN_FUTURE_06_12, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Check if the input Arg3 is valid then store it into dsm_in if needed Signed-off-by: Xiao Guangrong --- hw/acpi/nvdimm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 7e99889..b211b8b 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -624,10 +624,29 @@ static void nvdimm_build_acpi_devices(NVDIMMState *state, GSList *device_list, method = aml_method_serialized("NCAL", 4); { + Aml *ifctx; + aml_append(method, aml_store(aml_arg(0), aml_name("HDLE"))); aml_append(method, aml_store(aml_arg(1), aml_name("REVS"))); aml_append(method, aml_store(aml_arg(2), aml_name("FUNC"))); + /* Arg3 is passed as Package and it has one element? */ + ifctx = aml_if(aml_and(aml_equal(aml_object_type(aml_arg(3)), + aml_int(4)), + aml_equal(aml_sizeof(aml_arg(3)), + aml_int(1)))); + { + /* Local0 = Index(Arg3, 0) */ + aml_append(ifctx, aml_store(aml_index(aml_arg(3), aml_int(0)), + aml_local(0))); + /* Local3 = DeRefOf(Local0) */ + aml_append(ifctx, aml_store(aml_derefof(aml_local(0)), + aml_local(3))); + /* ARG3 = Local3 */ + aml_append(ifctx, aml_store(aml_local(3), aml_name("ARG3"))); + } + aml_append(method, ifctx); + aml_append(method, aml_store(aml_int(NOTIFY_VALUE), aml_name("NOTI"))); aml_append(method, aml_store(aml_name("RLEN"), aml_local(6)));