From patchwork Sun May 20 10:15:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 917121 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qhTEdQMr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pdBB1ZfBz9s4b for ; Sun, 20 May 2018 20:17:05 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750928AbeETKQ0 (ORCPT ); Sun, 20 May 2018 06:16:26 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:36105 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750994AbeETKQY (ORCPT ); Sun, 20 May 2018 06:16:24 -0400 Received: by mail-lf0-f68.google.com with SMTP id e9-v6so2950354lfb.3; Sun, 20 May 2018 03:16:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=u1bBVtqIQGM51uSDXY5XNBbPmjT3486DCJXPsPmqVX0=; b=qhTEdQMrtF7l0daXYZ8JOsP4P+LAt6YnIsSyGpcDiewjM5j9AS+YmutBscT1Y+ca6f XptDtHCubHdnO4AIT183dQJzArq6LPGBmDXtfEq0lpUupZ5hX1N5MJD4PjJKQFQi0sO7 mx85WNelD5LjAjCCgB0/ma1lqvuWsZnmk7txABuKJQd3TZ7QIroAzK9d7i4frYlU5tFG zStcvXtKUOppWRYPex5ROScK6FnzzDcCJg/kb3bDE3gqjx3bIzC9OIMVBaEbHtuY9H9V fFJkJyJnQE+xDDG1uSUi3squDG/FRVe77rSyO+tZ0eNxD3EZClHZWUA+GvYM7u0IEj9o nDIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=u1bBVtqIQGM51uSDXY5XNBbPmjT3486DCJXPsPmqVX0=; b=OUdKmpaK3mSXY/2WlpB/OP1ssuCZRyh+H4997pYxDj8CKrifB8eccNZaH1pbv6wSeB aBmyZ6RoSz56LPxj71FSuIaebYZVGhZQuJwdRPsMEpW+RI7Gexa7lnoIkhxTx+jkdoCg +lk72FYoXTlUpoDvL4W25I3ZePwhE9JI82jGOgQvs+2EApGSaUHXV11iMa/Izak4Jdl7 gEHdlf2wz4ZjzBfmxbQPjL0CYZtRHl58dFIAoYkadSqcjki9IcoZggCBv5DcU415qiKP hE7Y7bGfJGHOj0y20TIQkqFrcjhzOlfAppW8iAIWG1wtE+KHsN5ibDZMd+N1bT4SwCQS +MCw== X-Gm-Message-State: ALKqPwcfdY3S50GCqD1kTKLCml8LqYoPtF28TQsKbplfi7SHcSJ0HIPn gzRt8FwnjaPY6YMC4NYOUXGKK88y X-Google-Smtp-Source: AB8JxZrj05WW0ppBkeYIxoqWZd2uZ6dsw14+Jf+UJ5xg0uCRAIrbtAcmIHf7FRHLGV+yvo0AyGinyw== X-Received: by 2002:a2e:1082:: with SMTP id 2-v6mr9525858ljq.9.1526811383132; Sun, 20 May 2018 03:16:23 -0700 (PDT) Received: from localhost.localdomain (109-252-91-60.nat.spd-mgts.ru. [109.252.91.60]) by smtp.gmail.com with ESMTPSA id p18-v6sm2627836lfd.91.2018.05.20.03.16.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 03:16:22 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= Subject: [PATCH v1 1/5] ARM: trusted_foundations: Implement L2 cache initialization callback Date: Sun, 20 May 2018 13:15:38 +0300 Message-Id: <20180520101542.12206-2-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Implement L2 cache initialization firmware callback that should be invoked early in boot to enable cache HW. Signed-off-by: Dmitry Osipenko --- arch/arm/firmware/trusted_foundations.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/arm/firmware/trusted_foundations.c b/arch/arm/firmware/trusted_foundations.c index 3fb1b5a1dce9..198ce5c75ca0 100644 --- a/arch/arm/firmware/trusted_foundations.c +++ b/arch/arm/firmware/trusted_foundations.c @@ -18,8 +18,13 @@ #include #include #include +#include #include +#define TF_CACHE_MAINT 0xfffff100 + +#define TF_CACHE_INIT 1 + #define TF_SET_CPU_BOOT_ADDR_SMC 0xfffff200 #define TF_CPU_PM 0xfffffffc @@ -63,9 +68,27 @@ static int tf_prepare_idle(void) return 0; } +#ifdef CONFIG_CACHE_L2X0 +static void tf_cache_write_sec(unsigned long val, unsigned int reg) +{ + pr_warn("%s: Ignoring write [0x%x]: 0x%08lx\n", __func__, reg, val); +} + +static int tf_init_cache(void) +{ + outer_cache.write_sec = tf_cache_write_sec; + tf_generic_smc(TF_CACHE_MAINT, TF_CACHE_INIT, 0); + + return 0; +} +#endif /* CONFIG_CACHE_L2X0 */ + static const struct firmware_ops trusted_foundations_ops = { .set_cpu_boot_addr = tf_set_cpu_boot_addr, .prepare_idle = tf_prepare_idle, +#ifdef CONFIG_CACHE_L2X0 + .l2x0_init = tf_init_cache, +#endif }; void register_trusted_foundations(struct trusted_foundations_platform_data *pd) From patchwork Sun May 20 10:15:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 917123 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dtTljHw+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pdBY53B7z9s4b for ; Sun, 20 May 2018 20:17:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751727AbeETKRX (ORCPT ); Sun, 20 May 2018 06:17:23 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:40792 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751109AbeETKQZ (ORCPT ); Sun, 20 May 2018 06:16:25 -0400 Received: by mail-lf0-f65.google.com with SMTP id u140-v6so7583961lff.7; Sun, 20 May 2018 03:16:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cA1Id+Fnr5TuOvMwgFMDas77NLXzl744mJOJ1S+fwbs=; b=dtTljHw+sgMveZ48cQ1X2YGiJhDxfX4RWLUx+wgNRhhWX5NDz5gvRWCia3JhrXmGFe ESUaC6U8GRC5VaB4Z9ZbDdztzIEFXfgAW1oiVd2XqBE3+yJ2xDyhQnAw229VxoSG7dM6 Fghcot0u6OJEOW4Ooz2Q+jvXHGcz0pLDuFFGv1+R3Pd+z937DOuwm//FY+ggzpign1G2 jl/SYuWT9LoiGySzzO1evvd9VxsepD/dd6j+2Gfu7ik3SYB38BW8Iekc+k3hqZ76rkls L+XKrp8equoBscGSomESmeBY2kG6gkIM4s5WasP/2OKSQI+XCEW5H6BxXnXBf5IWUHKb bg/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cA1Id+Fnr5TuOvMwgFMDas77NLXzl744mJOJ1S+fwbs=; b=J6VDbpGSu5g2Fn5XxuL42ekDlKei1mSITAidnpQZF5imFOwLwuF16w6xQuYfbU88Ul yFmfsJvqPk3DPFAVfS2z1pkKMKvmXoTOUxpSzK06xSvuI7ykLZaMkeChGX17z0J+l5CO TDWtktdrjMInp0GCf9f7AIXmXdQ5VungxTIcjEQRTor1wqzdzeUWsMWn7vezozz3yEhk CpRSqnUAQwUE4PbQgdHvwVnBh2aBPV45/EkWBPkY43hu3/sCHxQjGr2Perhr6Gsf0N0z XcFcLlB2MqpGE33ksQi9YNAmEwcqZ9CBxKN2TtCeFYNxHTwGcXMXWAw9zLWUtPT1+8+l SzEw== X-Gm-Message-State: ALKqPwcVPv8wDNMCd5nauTd/rGPlPP5dZsTYNN1E+x8JcPgwL5M8Ka4m 8ALyT6mjlILDfZt8n4P8+5o= X-Google-Smtp-Source: AB8JxZqCYZQ6KmV55zoh3xvV01UIUNfg2gzaCsHuzeGfbTxBLeQOn9FrLKR63sVI4WiHKq+NffGwQA== X-Received: by 2002:a2e:8456:: with SMTP id u22-v6mr9574934ljh.80.1526811384046; Sun, 20 May 2018 03:16:24 -0700 (PDT) Received: from localhost.localdomain (109-252-91-60.nat.spd-mgts.ru. [109.252.91.60]) by smtp.gmail.com with ESMTPSA id p18-v6sm2627836lfd.91.2018.05.20.03.16.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 03:16:23 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= Subject: [PATCH v1 2/5] ARM: trusted_foundations: Provide information about whether firmware is registered Date: Sun, 20 May 2018 13:15:39 +0300 Message-Id: <20180520101542.12206-3-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Add a helper that provides information about whether Trusted Foundations firmware operations have been registered. Signed-off-by: Dmitry Osipenko --- arch/arm/firmware/trusted_foundations.c | 5 +++++ arch/arm/include/asm/trusted_foundations.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/arch/arm/firmware/trusted_foundations.c b/arch/arm/firmware/trusted_foundations.c index 198ce5c75ca0..0428351574de 100644 --- a/arch/arm/firmware/trusted_foundations.c +++ b/arch/arm/firmware/trusted_foundations.c @@ -120,3 +120,8 @@ void of_register_trusted_foundations(void) panic("Trusted Foundation: missing version-minor property\n"); register_trusted_foundations(&pdata); } + +bool trusted_foundations_registered(void) +{ + return firmware_ops == &trusted_foundations_ops; +} diff --git a/arch/arm/include/asm/trusted_foundations.h b/arch/arm/include/asm/trusted_foundations.h index 00748350cf72..bfd0d780824b 100644 --- a/arch/arm/include/asm/trusted_foundations.h +++ b/arch/arm/include/asm/trusted_foundations.h @@ -31,6 +31,7 @@ #include #include #include +#include struct trusted_foundations_platform_data { unsigned int version_major; @@ -41,6 +42,7 @@ struct trusted_foundations_platform_data { void register_trusted_foundations(struct trusted_foundations_platform_data *pd); void of_register_trusted_foundations(void); +bool trusted_foundations_registered(void); #else /* CONFIG_TRUSTED_FOUNDATIONS */ @@ -68,6 +70,11 @@ static inline void of_register_trusted_foundations(void) if (of_find_compatible_node(NULL, NULL, "tlm,trusted-foundations")) register_trusted_foundations(NULL); } + +static inline bool trusted_foundations_registered(void) +{ + return false; +} #endif /* CONFIG_TRUSTED_FOUNDATIONS */ #endif From patchwork Sun May 20 10:15:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 917122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WN462ouM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pdBC13TQz9s4k for ; Sun, 20 May 2018 20:17:07 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752534AbeETKRF (ORCPT ); Sun, 20 May 2018 06:17:05 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:40795 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751292AbeETKQ0 (ORCPT ); Sun, 20 May 2018 06:16:26 -0400 Received: by mail-lf0-f68.google.com with SMTP id u140-v6so7583985lff.7; Sun, 20 May 2018 03:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XVXY9aVjwfEaBDrxkxQesIgLVl2iH1Y1fqjsyC6fDoA=; b=WN462ouM1aZF7bDMADDnx6QwDm0q/NoJA3xtNlCITT4GZQk/IfZCaO2CeacszNT3pk FNMaOo5jRsKH4302QhsdXxlbcyrkNJu3A1R6+50LTMTfE8ENh+z1QeRMcZT2gRuFsH5K 8pu2X7eMD4zG0xp5EzDFABcXG6oQJHUzoYSHowrVKANIudzTsbY2dA7GIS/iRY/8C/KZ OavWCSKIfSJU4W0NTJNNnx1+Q1dw+AGaWgIaWyHxOLTVNhcW5m23jiYb4kzEtXulBIWV JuAEH/4T+QnUkXrpyz/NlkpaaWkKxSmoDhIhX9rH7aiBJNYNKvemQI4FITJ6R4ZxCmZZ vG9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XVXY9aVjwfEaBDrxkxQesIgLVl2iH1Y1fqjsyC6fDoA=; b=irykf/fLX7ltC3GKv0ZFBappHz+kU7x6cKKzD1gbs8QQh5gvYPZG0mRv63deJmlIBe tIEOaQjuhWAOacYCHZJ2I2fStpFIwqp/rPkV/LOAc9WYd5A0pMmpuG/SSTEHUnMEjyN+ vRobgX4kK8Cj8y3MHsy+chTH6fy7HMZrwqUNogkU1eSpVKy8GeGZTMPMS9kNT6pABGMn ylFInDLm8gYDS8Xv5AGbno99K/2Cih4kgUQBkCXitc+8OZbo7cErPbOq8AmYcsy25oUi xY8AI47ZZ8LpZ4wL9aKI8zEGGxnemZD1hf5UiC4hVE0NbV45hBsG2a3Rv2c3qQHZRJ32 99Rw== X-Gm-Message-State: ALKqPwdDy2s0vPqG3YngCVgiuPfDFQkboXbjWrfaw8DlUImKQIzvDxxU 3NkmGGFYvx7+7AYhodeUpQqDFJx9 X-Google-Smtp-Source: AB8JxZox15mn8sIIR2QkI/G1zr+Gv0nhYPTsd1ume+k8CU6wab22xWqioiUhr1YBhkpqRCm8MLYj9A== X-Received: by 2002:a19:9855:: with SMTP id a82-v6mr19871789lfe.87.1526811384933; Sun, 20 May 2018 03:16:24 -0700 (PDT) Received: from localhost.localdomain (109-252-91-60.nat.spd-mgts.ru. [109.252.91.60]) by smtp.gmail.com with ESMTPSA id p18-v6sm2627836lfd.91.2018.05.20.03.16.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 03:16:24 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= Subject: [PATCH v1 3/5] ARM: tegra: Setup L2 cache using Trusted Foundations firmware Date: Sun, 20 May 2018 13:15:40 +0300 Message-Id: <20180520101542.12206-4-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org On Tegra20/30 L2 cache must be initialized using firmware call if CPU is running in insecure mode. Initialize L2 cache and setup the outer-cache callbacks in early boot using the firmware API. Signed-off-by: Dmitry Osipenko --- arch/arm/mach-tegra/tegra.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c index f9587be48235..590b1cf1a8c4 100644 --- a/arch/arm/mach-tegra/tegra.c +++ b/arch/arm/mach-tegra/tegra.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -70,9 +71,23 @@ u32 tegra_uart_config[3] = { 0, }; +static void __init tegra_trusted_foundations_l2x0_cache_init(void) +{ + if (IS_ENABLED(CONFIG_CACHE_L2X0) && + IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC) && + of_machine_is_compatible("nvidia,tegra20")) + call_firmware_op(l2x0_init); + + if (IS_ENABLED(CONFIG_CACHE_L2X0) && + IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) && + of_machine_is_compatible("nvidia,tegra30")) + call_firmware_op(l2x0_init); +} + static void __init tegra_init_early(void) { of_register_trusted_foundations(); + tegra_trusted_foundations_l2x0_cache_init(); tegra_cpu_reset_handler_init(); } From patchwork Sun May 20 10:15:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 917119 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lsc3Kuqz"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pd9s2YjCz9s4b for ; Sun, 20 May 2018 20:16:49 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751727AbeETKQb (ORCPT ); Sun, 20 May 2018 06:16:31 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:33308 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751029AbeETKQ1 (ORCPT ); Sun, 20 May 2018 06:16:27 -0400 Received: by mail-lf0-f65.google.com with SMTP id u9-v6so2701966lfc.0; Sun, 20 May 2018 03:16:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7hNMokYuIbCV1qtjnbNprjMafUaJbVPuYO8Wczx5jSk=; b=lsc3KuqzzFnHGF3TMUOoBmd8tAumvMJUd0Sl8VcFyo0ZMRaMEXivlWENJLM3f9dRmj fhU4J92Dx7mvv+wGaEqxkj071Pm+MhBKRG+7t2YKtdJV/OT3qxYwuUnRp/IJtA6jvwfN HjWM3PC5Zc4/H/5Mn5HYah7nGcDQGgDDDRUH+/SevkbMSz7lCXohS445xWCMNbR3C9jT LCc8KRl1bt7VZYhMg73bbSRk+6kclAEMZSGjnQVgpRYab8nEdHqZKHvj1rtjK3UUf6cz Xej4B8P2Vm9jZKIVgXgm2orwOhRNptK9UyS5YXzZGd4HiR1KODiP0wALPx2ii9paU0Cw miiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7hNMokYuIbCV1qtjnbNprjMafUaJbVPuYO8Wczx5jSk=; b=mvwey1zj2wJkojcDlr8iKapkClWaORR3CKirxMGh1E1CxPXB4Rl5DhMn2JxsuhMTSK 9em6Wqjzhp9m9p89Hh1F+vrfRoE/D+qcN5Y36D0v6jfmSx4bD0jKUqKfpv0vvPs1Pg9a 72AXVDzPzL2LZSSs48/CadBZBweWmjsf77UPvpzCSqYQtD8u5JgvtpY06EGNgLvFiI55 1DqFixyB0/19qrs96qiiZwJcysSCwIQi4fvLIc+eo8O1yX3hxF6jerIBW392nZpV8LNT fiJxqwRHUX4V5zO6mprx/I0u8r1ieDuvmSEXv6r/G6gi2n2f/c/mDCd9TQp19rR3yRDm r9Jg== X-Gm-Message-State: ALKqPwdiEJbj8FV9ofdXbrPggIT2DW6xhHvlb5ngp1mZtur3KKexPIdC R9A4zkGuPSJaIeEFaF1cB0E= X-Google-Smtp-Source: AB8JxZrZcdthyM3dCAmYTuZUm0EwlEEg7vYYeMfRcFb92pCMRBlCHNRdaRtpculORDivA2hetkWEQA== X-Received: by 2002:a19:c350:: with SMTP id t77-v6mr24079914lff.127.1526811385865; Sun, 20 May 2018 03:16:25 -0700 (PDT) Received: from localhost.localdomain (109-252-91-60.nat.spd-mgts.ru. [109.252.91.60]) by smtp.gmail.com with ESMTPSA id p18-v6sm2627836lfd.91.2018.05.20.03.16.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 03:16:25 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= Subject: [PATCH v1 4/5] ARM: tegra: Don't apply CPU erratas in insecure mode Date: Sun, 20 May 2018 13:15:41 +0300 Message-Id: <20180520101542.12206-5-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org CPU isn't allowed to touch secure registers while running under secure monitor. Hence skip applying CPU erratas in the reset handler if Trusted Foundations firmware presents. Signed-off-by: Dmitry Osipenko --- arch/arm/mach-tegra/reset-handler.S | 27 +++++++++++++++++++-------- arch/arm/mach-tegra/reset.c | 3 +++ arch/arm/mach-tegra/reset.h | 4 +++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-tegra/reset-handler.S b/arch/arm/mach-tegra/reset-handler.S index 805f306fa6f7..d84c74a95806 100644 --- a/arch/arm/mach-tegra/reset-handler.S +++ b/arch/arm/mach-tegra/reset-handler.S @@ -121,6 +121,12 @@ ENTRY(__tegra_cpu_reset_handler) cpsid aif, 0x13 @ SVC mode, interrupts disabled tegra_get_soc_id TEGRA_APB_MISC_BASE, r6 + + adr r12, __tegra_cpu_reset_handler_data + ldr r0, [r12, #RESET_DATA(TF_PRESENT)] + cmp r0, #0 + bne after_errata + #ifdef CONFIG_ARCH_TEGRA_2x_SOC t20_check: cmp r6, #TEGRA20 @@ -155,7 +161,6 @@ after_errata: and r10, r10, #0x3 @ R10 = CPU number mov r11, #1 mov r11, r11, lsl r10 @ R11 = CPU mask - adr r12, __tegra_cpu_reset_handler_data #ifdef CONFIG_SMP /* Does the OS know about this CPU? */ @@ -169,10 +174,9 @@ after_errata: cmp r6, #TEGRA20 bne 1f /* If not CPU0, don't let CPU0 reset CPU1 now that CPU1 is coming up. */ - mov32 r5, TEGRA_IRAM_BASE + TEGRA_IRAM_RESET_HANDLER_OFFSET mov r0, #CPU_NOT_RESETTABLE cmp r10, #0 - strneb r0, [r5, #__tegra20_cpu1_resettable_status_offset] + strneb r0, [r12, #RESET_DATA(RESETTABLE_STATUS)] 1: #endif @@ -278,13 +282,20 @@ ENDPROC(__tegra_cpu_reset_handler) .type __tegra_cpu_reset_handler_data, %object .globl __tegra_cpu_reset_handler_data __tegra_cpu_reset_handler_data: - .rept TEGRA_RESET_DATA_SIZE - .long 0 - .endr + .long 0 /* TEGRA_RESET_MASK_PRESENT */ + .long 0 /* TEGRA_RESET_MASK_LP1 */ + .long 0 /* TEGRA_RESET_MASK_LP2 */ + .long 0 /* TEGRA_RESET_STARTUP_SECONDARY */ + .long 0 /* TEGRA_RESET_STARTUP_LP2 */ + .long 0 /* TEGRA_RESET_STARTUP_LP1 */ + .globl __tegra20_cpu1_resettable_status_offset .equ __tegra20_cpu1_resettable_status_offset, \ . - __tegra_cpu_reset_handler_start - .byte 0 - .align L1_CACHE_SHIFT + .long 0 /* TEGRA_RESET_RESETTABLE_STATUS */ + .globl __tegra_tf_present + .equ __tegra_tf_present, . - __tegra_cpu_reset_handler_start + .long 0 /* TEGRA_RESET_TF_PRESENT */ + .align L1_CACHE_SHIFT ENTRY(__tegra_cpu_reset_handler_end) diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.c index dc558892753c..b02ae7699842 100644 --- a/arch/arm/mach-tegra/reset.c +++ b/arch/arm/mach-tegra/reset.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "iomap.h" #include "irammap.h" @@ -89,6 +90,8 @@ static void __init tegra_cpu_reset_handler_enable(void) void __init tegra_cpu_reset_handler_init(void) { + __tegra_cpu_reset_handler_data[TEGRA_RESET_TF_PRESENT] = + trusted_foundations_registered(); #ifdef CONFIG_SMP __tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_PRESENT] = diff --git a/arch/arm/mach-tegra/reset.h b/arch/arm/mach-tegra/reset.h index 9c479c7925b8..0d9ddc022ece 100644 --- a/arch/arm/mach-tegra/reset.h +++ b/arch/arm/mach-tegra/reset.h @@ -25,7 +25,9 @@ #define TEGRA_RESET_STARTUP_SECONDARY 3 #define TEGRA_RESET_STARTUP_LP2 4 #define TEGRA_RESET_STARTUP_LP1 5 -#define TEGRA_RESET_DATA_SIZE 6 +#define TEGRA_RESET_RESETTABLE_STATUS 6 +#define TEGRA_RESET_TF_PRESENT 7 +#define TEGRA_RESET_DATA_SIZE 8 #ifndef __ASSEMBLY__ From patchwork Sun May 20 10:15:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 917120 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ot5hcQJd"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pdB061cLz9s4b for ; Sun, 20 May 2018 20:16:56 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751167AbeETKQ3 (ORCPT ); Sun, 20 May 2018 06:16:29 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:40797 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751639AbeETKQ2 (ORCPT ); Sun, 20 May 2018 06:16:28 -0400 Received: by mail-lf0-f67.google.com with SMTP id u140-v6so7584031lff.7; Sun, 20 May 2018 03:16:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=e3bc+4uNRSfmUL1mZm1Uks8LdYbuYUN6vmbtmjy1dlk=; b=ot5hcQJdSYVBPGDTHNLFfFn4xrKPh2Wiwpp3Sxz6MkVyiSvb+qcn08PK9L1Fs/J3x/ HsmDiEUbrRfFfFD3tiTY+MAwum2RHRGEwNn/qQSmK+rEk9W1HVD/uXnPqdCPw2DcxevJ yuZzenj7ZnavH+cm8g2sFwI2Olj/imkuKquzyTM8CGP0GgMqu/SM4mkpAveCgGzgwKGJ I5yQURRxJM+ue6NkRXNn4zBNTycIlTQCzCXViKOqRnN+XCmfKuAw9jqHQFaZG3onCCtU e/wSE7OhlkZbEMy01Ux4VfUneoCjAAGPFMipKKWsaPnfAuuW6fOu4UgTSsDGkMbmQ5zK 1yvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=e3bc+4uNRSfmUL1mZm1Uks8LdYbuYUN6vmbtmjy1dlk=; b=GhYS7J/54C7+k1Z92TAlLrkd8QtrNpTcnrA5Q+aV3JF3sXhC4MscWGLJ0wuoP2t0q0 iYDCdqM3+imdICyNVvZIYCnZsc2f1ls6ZbKJESQCpK7j6M/kGfT2JcHXJ4mHkjWp3CsR SADZyKILdACAZiEhzMjuPRO0jIEOufiXXSvyy59BuRUaOyMnRM5FwXuzInqEvDwVjZfY AittwAyB+uIKgkMKYmNaD8E3tYD635NuQd4iZr8thXf7cwsKbK92CGGtFrM/pGdL9rNj n+JlWXWdfbsX+x+RIq77l/z9C5pc3Ysolq8eHQHORnJrw++5a4D684MwgBEqbryMZc6c /tAw== X-Gm-Message-State: ALKqPwchxYE4uWtQh1eahIQkEIYw8nkJ2dGAD1uPRpNgTkC+ySg5vl+D nH+4jnLSXNPwRLeZKoKH9RJKkUfZ X-Google-Smtp-Source: AB8JxZreFvDIGdQrBBmGilIYW7GzUE61QpBdDGftDZr52J2gKAqosFfMbeEejd40HgJyK1NlPa1ehg== X-Received: by 2002:a19:fc0d:: with SMTP id a13-v6mr499637lfi.66.1526811386793; Sun, 20 May 2018 03:16:26 -0700 (PDT) Received: from localhost.localdomain (109-252-91-60.nat.spd-mgts.ru. [109.252.91.60]) by smtp.gmail.com with ESMTPSA id p18-v6sm2627836lfd.91.2018.05.20.03.16.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 03:16:26 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peter Geis , =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= Subject: [PATCH v1 5/5] ARM: tegra: Always boot CPU in ARM-mode Date: Sun, 20 May 2018 13:15:42 +0300 Message-Id: <20180520101542.12206-6-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180520101542.12206-1-digetx@gmail.com> References: <20180520101542.12206-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org CPU always jumps into the reset handler in ARM-mode from the Trusted Foundations firmware, hence make CPU to always jump into kernel in ARM-mode regardless of the firmware presence to support Thumb2 kernel + TF case. Signed-off-by: Dmitry Osipenko --- arch/arm/mach-tegra/reset-handler.S | 1 + arch/arm/mach-tegra/reset.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-tegra/reset-handler.S b/arch/arm/mach-tegra/reset-handler.S index d84c74a95806..7e15c3bdf118 100644 --- a/arch/arm/mach-tegra/reset-handler.S +++ b/arch/arm/mach-tegra/reset-handler.S @@ -115,6 +115,7 @@ ENTRY(__tegra_cpu_reset_handler_start) * must be position-independent. */ + .arm .align L1_CACHE_SHIFT ENTRY(__tegra_cpu_reset_handler) diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.c index b02ae7699842..3f1ef4561298 100644 --- a/arch/arm/mach-tegra/reset.c +++ b/arch/arm/mach-tegra/reset.c @@ -97,7 +97,7 @@ void __init tegra_cpu_reset_handler_init(void) __tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_PRESENT] = *((u32 *)cpu_possible_mask); __tegra_cpu_reset_handler_data[TEGRA_RESET_STARTUP_SECONDARY] = - __pa_symbol((void *)secondary_startup); + __pa_symbol((void *)secondary_startup_arm); #endif #ifdef CONFIG_PM_SLEEP