Received: by 10.192.165.148 with SMTP id m20csp406078imm; Fri, 4 May 2018 12:09:35 -0700 (PDT) X-Google-Smtp-Source: AB8JxZopuKVfjsWnS25uEKgABtLwFWAa5WuSg3p8v/4COeITsvXZ9FAY1X6ru9gd3/hn+tg9H45Q X-Received: by 10.98.87.84 with SMTP id l81mr28058369pfb.56.1525460975528; Fri, 04 May 2018 12:09:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525460975; cv=none; d=google.com; s=arc-20160816; b=W9Uuf4vogZbIVGvEp82AksW+Eqo55txLzUhWVnFKy+3orxXA+0sEEl0RI+WGc0tRRA XQu7hZb4U36Ea0em7HHs00yBh6pIhY4DJmvFL81Cq3non+uYR2Hsmt6voxOqbfYtZLf2 EpfU4NtBq8pI23P6hCWygoefJIiHHx4FqFfIowTIa7t/2WIFrA/fAMFBOFv3h52sRiop M52nbPKZjUOUHyf0IiXzbnsci7lHwqQuZj9ivV2OLTtYLh7KoV1nMxNy6duC48CpbgET HcKMcPHMBINCdhg8sqtOUmx01t97XikPtB9sDBp4owPGGyt7AlLXuFj8s9PhGXTKJJqK O31Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=EvZ8X6lgAJTw52BlVuId+vxlJWUg3MBF3qP9TVsVsPM=; b=BFsm/ItiCdfka14ZnjxIoC3/E+ENtn75NmGKVryXRJdBZPW7w0HV12OiyIrs993H2z VnIWkAzgDQF9/WF2JGjcxpN13OLoFlT/1yKqUbeNYgE0jRg+Q+ShakxREAHufzztC9Xj lMpzIlYcn2U2QnjKLY5tiQl7zI6vCZgxjaZBTIJ/lQHcj/RWZQ1slgwcp4+saqXfOfMU q18jsY5vQXYNMUSclCv0m2L51hkwJvewL3XLjz/0iZs7rAmHCe773uZExSjJhWrhBfWU oTA7xw7hW3uxtqefjsRcGgXPOJtW+tMAiW23UdizBbrN8rCuEE0zhgeH8+rvVmKT/EWa uR6g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 m1-v6si15856737plt.276.2018.05.04.12.09.21; Fri, 04 May 2018 12:09:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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 linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751906AbeEDTHD (ORCPT + 99 others); Fri, 4 May 2018 15:07:03 -0400 Received: from mail.bootlin.com ([62.4.15.54]:42980 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751886AbeEDTHA (ORCPT ); Fri, 4 May 2018 15:07:00 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id F0A89207FF; Fri, 4 May 2018 21:06:57 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from dell-desktop.home (176-137-37-244.abo.bbox.fr [176.137.37.244]) by mail.bootlin.com (Postfix) with ESMTPSA id F06D920650; Fri, 4 May 2018 21:06:56 +0200 (CEST) From: =?UTF-8?q?Myl=C3=A8ne=20Josserand?= To: linux@armlinux.org.uk, maxime.ripard@bootlin.com, wens@csie.org, marc.zyngier@arm.com, mark.rutland@arm.com, robh+dt@kernel.org, horms@verge.net.au, geert@linux-m68k.org, magnus.damm@gmail.com Cc: f.fainelli@gmail.com, opendmb@gmail.com, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, clabbe.montjoie@gmail.com, quentin.schulz@bootlin.com, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, mylene.josserand@bootlin.com Subject: [PATCH v9 06/12] ARM: smp: Add initialization of CNTVOFF Date: Fri, 4 May 2018 21:05:39 +0200 Message-Id: <20180504190545.5114-7-mylene.josserand@bootlin.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180504190545.5114-1-mylene.josserand@bootlin.com> References: <20180504190545.5114-1-mylene.josserand@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The CNTVOFF register from arch timer is uninitialized. It should be done by the bootloader but it is currently not the case, even for boot CPU because this SoC is booting in secure mode. It leads to an random offset value meaning that each CPU will have a different time, which isn't working very well. Add assembly code used for boot CPU and secondary CPU cores to make sure that the CNTVOFF register is initialized. Because this code can be used by different platforms, add this assembly file in ARM's common folder. Signed-off-by: Mylène Josserand Reviewed-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- arch/arm/common/Makefile | 1 + arch/arm/common/secure_cntvoff.S | 31 +++++++++++++++++++++++++++++++ arch/arm/include/asm/secure_cntvoff.h | 8 ++++++++ 3 files changed, 40 insertions(+) create mode 100644 arch/arm/common/secure_cntvoff.S create mode 100644 arch/arm/include/asm/secure_cntvoff.h diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile index 70b4a14ed993..1e9f7af8f70f 100644 --- a/arch/arm/common/Makefile +++ b/arch/arm/common/Makefile @@ -10,6 +10,7 @@ obj-$(CONFIG_DMABOUNCE) += dmabounce.o obj-$(CONFIG_SHARP_LOCOMO) += locomo.o obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o obj-$(CONFIG_SHARP_SCOOP) += scoop.o +obj-$(CONFIG_SMP) += secure_cntvoff.o obj-$(CONFIG_PCI_HOST_ITE8152) += it8152.o obj-$(CONFIG_MCPM) += mcpm_head.o mcpm_entry.o mcpm_platsmp.o vlock.o CFLAGS_REMOVE_mcpm_entry.o = -pg diff --git a/arch/arm/common/secure_cntvoff.S b/arch/arm/common/secure_cntvoff.S new file mode 100644 index 000000000000..68a4a8344319 --- /dev/null +++ b/arch/arm/common/secure_cntvoff.S @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (C) 2014 Renesas Electronics Corporation + * + * Initialization of CNTVOFF register from secure mode + * + */ + +#include +#include + +ENTRY(secure_cntvoff_init) + .arch armv7-a + /* + * CNTVOFF has to be initialized either from non-secure Hypervisor + * mode or secure Monitor mode with SCR.NS==1. If TrustZone is enabled + * then it should be handled by the secure code + */ + cps #MON_MODE + mrc p15, 0, r1, c1, c1, 0 /* Get Secure Config */ + orr r0, r1, #1 + mcr p15, 0, r0, c1, c1, 0 /* Set Non Secure bit */ + isb + mov r0, #0 + mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */ + isb + mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */ + isb + cps #SVC_MODE + ret lr +ENDPROC(secure_cntvoff_init) diff --git a/arch/arm/include/asm/secure_cntvoff.h b/arch/arm/include/asm/secure_cntvoff.h new file mode 100644 index 000000000000..1f93aee1f630 --- /dev/null +++ b/arch/arm/include/asm/secure_cntvoff.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __ASMARM_ARCH_CNTVOFF_H +#define __ASMARM_ARCH_CNTVOFF_H + +extern void secure_cntvoff_init(void); + +#endif -- 2.11.0