From patchwork Fri Jan 31 19:08:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elliot Berman X-Patchwork-Id: 190486 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B620DC35240 for ; Fri, 31 Jan 2020 19:09:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74B0B2173E for ; Fri, 31 Jan 2020 19:09:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="rFjimmi6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726487AbgAaTJN (ORCPT ); Fri, 31 Jan 2020 14:09:13 -0500 Received: from mail25.static.mailgun.info ([104.130.122.25]:62461 "EHLO mail25.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726023AbgAaTJM (ORCPT ); Fri, 31 Jan 2020 14:09:12 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1580497752; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=aRwX1jcVN/JyxVj3dlueMTh7f3R8MmKjYZHHaruUc7A=; b=rFjimmi6VP0z/dO6QIxyreCx0HoPloa3AvCRtPgXgl0wFxfoniDKxoxC5s7nFL+RG2DGzFcH zhFeb3HJbxs/P5Rd+koan7lYta8lxPo1kgs8bD8jL0H3KRItpH1Rxd8vxEeT1X7cm5thSF3y ubVQ65S5iMXl/NdA46xtsVBKyss= X-Mailgun-Sending-Ip: 104.130.122.25 X-Mailgun-Sid: WyI1MzIzYiIsICJsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by mxa.mailgun.org with ESMTP id 5e347b52.7f41f5844ce0-smtp-out-n02; Fri, 31 Jan 2020 19:09:06 -0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 40249C447AA; Fri, 31 Jan 2020 19:09:06 +0000 (UTC) Received: from eberman-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: eberman) by smtp.codeaurora.org (Postfix) with ESMTPSA id 2D746C447AD; Fri, 31 Jan 2020 19:09:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 2D746C447AD Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=eberman@codeaurora.org From: Elliot Berman To: Mark Rutland , Lorenzo Pieralisi , Sudeep Holla Cc: Elliot Berman , Bjorn Andersson , Trilok Soni , Prasad Sodagudi , David Collins , linux-arm-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 2/3] firmware: psci: Add support for dt-supplied SYSTEM_RESET2 type Date: Fri, 31 Jan 2020 11:08:50 -0800 Message-Id: <1580497731-9845-3-git-send-email-eberman@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580497731-9845-1-git-send-email-eberman@codeaurora.org> References: <1580497731-9845-1-git-send-email-eberman@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Some implementors of PSCI may relax the requirements of the PSCI architectural warm reset. In order to comply with PSCI specification, a different reset_type value must be used. The alternate PSCI SYSTEM_RESET2 may be used in all warm/soft reboot scenarios, replacing the architectural warm reset. Signed-off-by: Elliot Berman --- drivers/firmware/psci/psci.c | 21 +++++++++++++++++---- include/linux/psci.h | 1 + include/uapi/linux/psci.h | 2 ++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index 2937d44..75e6a38 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -55,6 +55,7 @@ bool psci_tos_resident_on(int cpu) struct psci_operations psci_ops = { .conduit = SMCCC_CONDUIT_NONE, .smccc_version = SMCCC_VERSION_1_0, + .sys_reset2_reset_type = PSCI_1_1_SYSTEM_RESET2_SYSTEM_WARM_RESET, }; enum arm_smccc_conduit arm_smccc_1_1_get_conduit(void) @@ -272,11 +273,10 @@ static void psci_sys_reset(enum reboot_mode reboot_mode, const char *cmd) if ((reboot_mode == REBOOT_WARM || reboot_mode == REBOOT_SOFT) && psci_system_reset2_supported) { /* - * reset_type[31] = 0 (architectural) - * reset_type[30:0] = 0 (SYSTEM_WARM_RESET) * cookie = 0 (ignored by the implementation) */ - invoke_psci_fn(PSCI_FN_NATIVE(1_1, SYSTEM_RESET2), 0, 0, 0); + invoke_psci_fn(PSCI_FN_NATIVE(1_1, SYSTEM_RESET2), + psci_ops.sys_reset2_reset_type, 0, 0); } else { invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); } @@ -493,6 +493,7 @@ typedef int (*psci_initcall_t)(const struct device_node *); static int __init psci_0_2_init(struct device_node *np) { int err; + u32 param; err = get_set_conduit_method(np); if (err) @@ -505,7 +506,19 @@ static int __init psci_0_2_init(struct device_node *np) * can be carried out according to the specific version reported * by firmware */ - return psci_probe(); + err = psci_probe(); + if (err) + return err; + + if (psci_system_reset2_supported && + !of_property_read_u32(np, "arm,psci-sys-reset2-type", ¶m)) { + if ((s32)param > 0) + pr_warn("%08x is an invalid architectural reset type.\n", + param); + psci_ops.sys_reset2_reset_type = param; + } + + return 0; } /* diff --git a/include/linux/psci.h b/include/linux/psci.h index a67712b..1959a80 100644 --- a/include/linux/psci.h +++ b/include/linux/psci.h @@ -37,6 +37,7 @@ struct psci_operations { int (*migrate_info_type)(void); enum arm_smccc_conduit conduit; enum smccc_version smccc_version; + u32 sys_reset2_reset_type; }; extern struct psci_operations psci_ops; diff --git a/include/uapi/linux/psci.h b/include/uapi/linux/psci.h index 2fcad1d..d786ec8 100644 --- a/include/uapi/linux/psci.h +++ b/include/uapi/linux/psci.h @@ -55,6 +55,8 @@ #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14) #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18) +#define PSCI_1_1_SYSTEM_RESET2_SYSTEM_WARM_RESET 0 + /* PSCI v0.2 power state encoding for CPU_SUSPEND function */ #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff #define PSCI_0_2_POWER_STATE_ID_SHIFT 0 From patchwork Fri Jan 31 19:08:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elliot Berman X-Patchwork-Id: 190485 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 763F0C2D0DB for ; Fri, 31 Jan 2020 19:09:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 39B7F214D8 for ; Fri, 31 Jan 2020 19:09:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="W6tEM2nx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726138AbgAaTJK (ORCPT ); Fri, 31 Jan 2020 14:09:10 -0500 Received: from mail26.static.mailgun.info ([104.130.122.26]:41731 "EHLO mail26.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725939AbgAaTJK (ORCPT ); Fri, 31 Jan 2020 14:09:10 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1580497749; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=cRZbdQI2MGJfhs6lFGLd7MsxVV7vAla/hKTzsRrdQfs=; b=W6tEM2nxS3tju8m6NWqV+o8mQ7gkGsZUOx/3iVTc+KckIMQO2UOkQdQNzEvIoAPOxkJMnCq7 T0oSa93GAULgYMIx2hig+3VJH26BBjF6t59Tn6JEqCrA54o9OgY+DQwv2IUKw1Oa4Mps6gbY By0SpqpLw8Hkb6j9d0rimT5+Vd8= X-Mailgun-Sending-Ip: 104.130.122.26 X-Mailgun-Sid: WyI1MzIzYiIsICJsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by mxa.mailgun.org with ESMTP id 5e347b52.7f52ecdf93e8-smtp-out-n01; Fri, 31 Jan 2020 19:09:06 -0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 1001) id A1E66C447A5; Fri, 31 Jan 2020 19:09:06 +0000 (UTC) Received: from eberman-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: eberman) by smtp.codeaurora.org (Postfix) with ESMTPSA id C5E88C447B0; Fri, 31 Jan 2020 19:09:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C5E88C447B0 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=eberman@codeaurora.org From: Elliot Berman To: Mark Rutland , Lorenzo Pieralisi , Sudeep Holla Cc: Elliot Berman , Bjorn Andersson , Trilok Soni , Prasad Sodagudi , David Collins , linux-arm-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC v2 3/3] arm64: dts: qcom: sm8250: Add vendor-specific PSCI system reset2 type Date: Fri, 31 Jan 2020 11:08:51 -0800 Message-Id: <1580497731-9845-4-git-send-email-eberman@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580497731-9845-1-git-send-email-eberman@codeaurora.org> References: <1580497731-9845-1-git-send-email-eberman@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Qualcomm Technologies, Inc. SoCs do not guarantee that an architectural warm reset boots back into Linux kernel. For instance, if download mode or reboot reason cookies are set, the SoC would do a warm reset into an alternate exception level (e.g. a mode to collect RAM dumps) or application at EL1 (e.g. fastboot mode). Thus, Qualcomm Technologies, Inc. SoCs support a vendor-specific warm reset type that can be used in all instances of warm/soft reboots. Signed-off-by: Elliot Berman --- arch/arm64/boot/dts/qcom/sm8250.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi index 76c0fcd..bbaeee9 100644 --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi @@ -162,6 +162,7 @@ psci { compatible = "arm,psci-1.0"; method = "smc"; + arm,psci-sys-reset2-type = <0x80000000>; }; reserved_memory: reserved-memory {