From patchwork Mon Nov 25 10:44:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jianyong Wu X-Patchwork-Id: 180147 Delivered-To: patch@linaro.org Received: by 2002:a92:38d5:0:0:0:0:0 with SMTP id g82csp2969395ilf; Mon, 25 Nov 2019 02:45:40 -0800 (PST) X-Google-Smtp-Source: APXvYqwSwn324YMjNlK+8YRDYzcCC3BSxT521iZ57BDhlHYA+BdlgBYsMR4VYkkJkVnqzAxYhAEI X-Received: by 2002:a50:fc02:: with SMTP id i2mr17965517edr.284.1574678740502; Mon, 25 Nov 2019 02:45:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574678740; cv=none; d=google.com; s=arc-20160816; b=Keev3m/5iNEqIT89p4R8Q74DRiSQ4rqYYLh/ddAnXIzrQKzq29goVkZuOGRtDpoj1P OEGNj8EBDsHZ1rkplP/MzeTG0C3LA1RwJPfvqhCU43amXnpxyF7JWlFGW2+/WIAdFYpc Cfiei+8urulsOJ9ziMWHao2zmI/o76Yf70yn2KW4Wf1Byvt0EsEO6awBrGIwJtbl/oWy Z5O8cKwU4WpF2u4xyaWUAAJtzYLXauQDu5FSTCzbScL3szA5+85oNDE9vMqZNMyvwJuc B0VYVcjp5SAhn8z/p4Ey9HULOHoIMAcqvT87A+Od9cxoVkbm5n5Yt63DArpu0dmV1O7o 7fmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=q0+UEjuXl6w4ag7uFIrQR1sKOwmkgpNuqOWNyxco3F0=; b=d2OHWJ/Io4wdBzXc2IMuRaAOR48e8RdXSdVkA9ctz6p+v+dR9WhuwVh+7fdJN4a0jK 8ZCVdfxa0/DzoRjWi4w10V+Cd8RGm6iv4RyMII+prsbPHgdNwjLtUrk2eQAsnXdVSa8a ZvtZcfI3QIZhp4Di4jpcJZtmCJoyN8zUx/G511mZcFQi1GfTDSufgKslh+LvYVr7PCoe dVVpJ4JqL5QAAQ1/HDE6RK43lfTbclpWYTzcuO51Hp+U9067JsMCxO0FSRQgYXexAA8i RM9bYFhrhcwvz78OVAZEvbSHDQV+FcV+neAt9wmYNEoes84R5H88zzpV0s0sBLmF8JcD Uizw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a47si4566332edc.145.2019.11.25.02.45.40; Mon, 25 Nov 2019 02:45:40 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727609AbfKYKpj (ORCPT + 9 others); Mon, 25 Nov 2019 05:45:39 -0500 Received: from foss.arm.com ([217.140.110.172]:48018 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727594AbfKYKpi (ORCPT ); Mon, 25 Nov 2019 05:45:38 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EC8A855D; Mon, 25 Nov 2019 02:45:37 -0800 (PST) Received: from entos-d05.shanghai.arm.com (entos-d05.shanghai.arm.com [10.169.40.35]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 56E063F52E; Mon, 25 Nov 2019 02:45:32 -0800 (PST) From: Jianyong Wu To: netdev@vger.kernel.org, yangbo.lu@nxp.com, john.stultz@linaro.org, tglx@linutronix.de, pbonzini@redhat.com, sean.j.christopherson@intel.com, maz@kernel.org, richardcochran@gmail.com, Mark.Rutland@arm.com, will@kernel.org, suzuki.poulose@arm.com Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Steve.Capper@arm.com, Kaly.Xin@arm.com, justin.he@arm.com, jianyong.wu@arm.com, nd@arm.com, Mark Rutland , Catalin Marinas Subject: [RFC PATCH v8 1/8] arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit() Date: Mon, 25 Nov 2019 18:44:59 +0800 Message-Id: <20191125104506.36850-2-jianyong.wu@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191125104506.36850-1-jianyong.wu@arm.com> References: <20191125104506.36850-1-jianyong.wu@arm.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mark Rutland SMCCC callers are currently amassing a collection of enums for the SMCCC conduit, and are having to dig into the PSCI driver's internals in order to figure out what to do. Let's clean this up, with common SMCCC_CONDUIT_* definitions, and an arm_smccc_1_1_get_conduit() helper that abstracts the PSCI driver's internal state. We can kill off the PSCI_CONDUIT_* definitions once we've migrated users over to the new interface. Signed-off-by: Mark Rutland Acked-by: Lorenzo Pieralisi Acked-by: Will Deacon Signed-off-by: Catalin Marinas --- drivers/firmware/psci/psci.c | 15 +++++++++++++++ include/linux/arm-smccc.h | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) -- 2.17.1 diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index f82ccd39a913..5f31f1bea1af 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -57,6 +57,21 @@ struct psci_operations psci_ops = { .smccc_version = SMCCC_VERSION_1_0, }; +enum arm_smccc_conduit arm_smccc_1_1_get_conduit(void) +{ + if (psci_ops.smccc_version < SMCCC_VERSION_1_1) + return SMCCC_CONDUIT_NONE; + + switch (psci_ops.conduit) { + case PSCI_CONDUIT_SMC: + return SMCCC_CONDUIT_SMC; + case PSCI_CONDUIT_HVC: + return SMCCC_CONDUIT_HVC; + default: + return SMCCC_CONDUIT_NONE; + } +} + typedef unsigned long (psci_fn)(unsigned long, unsigned long, unsigned long, unsigned long); static psci_fn *invoke_psci_fn; diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h index 552cbd49abe8..701fa1da6b4a 100644 --- a/include/linux/arm-smccc.h +++ b/include/linux/arm-smccc.h @@ -107,6 +107,22 @@ #include #include + +enum arm_smccc_conduit { + SMCCC_CONDUIT_NONE, + SMCCC_CONDUIT_SMC, + SMCCC_CONDUIT_HVC, +}; + +/** + * arm_smccc_1_1_get_conduit() + * + * Returns the conduit to be used for SMCCCv1.1 or later. + * + * When SMCCCv1.1 is not present, returns SMCCC_CONDUIT_NONE. + */ +enum arm_smccc_conduit arm_smccc_1_1_get_conduit(void); + /** * struct arm_smccc_res - Result from SMC/HVC call * @a0-a3 result values from registers 0 to 3