Received: by 10.213.65.68 with SMTP id h4csp770397imn; Wed, 4 Apr 2018 07:01:59 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+q6RlzVSHpuJvb8KTqOofq3e+LEmNP4iTm7JY3ijbARlpzXy5EZZQBABHMQnsPUGJp+i5m X-Received: by 10.167.128.2 with SMTP id j2mr14050714pfi.179.1522850519065; Wed, 04 Apr 2018 07:01:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522850519; cv=none; d=google.com; s=arc-20160816; b=UmFk+aCFz/IrgT/4FzLZwT5UU12gXIEPPDzMD2P53bQNQ8bJsaeoice6SwfQ2kZHio znWHWML6xWoIOELd8xphiKUO9Y4jn9oVnHCTvP5GlfSflkY0jttF/cDm+pIdyEHZU0eR uGwMEvTvRiV5tWmJbMR7YVDIk/KynSxsMWB9EjI9F0iJ0ebDPDgc9BgbQ4eX2T9RXSGu OdvH2L/Q4cAeFSVW5HiVO5obNIngLIlCppFVeerCTRMLN4WIoxTYsCdi4QBeXc34GeKO C+C14m/jvsF/DXHgDJ8KoCOphIEgIWL1HRYq056AR2Utrv+YxQwbatSEvg/6hgAk/SJV zjqA== 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 :organization:references:in-reply-to:message-id:subject:cc:to:from :date:arc-authentication-results; bh=1i1gPEQhyK4tKz8vNedQgRETRULocXm10iasCr/S0t8=; b=WAlEiH0m6NS/5vjAoRV6sYCrQUySpDNvLQpVBPBMvmVuWJeLayXzbRgkAAXl611OyU Qy8z4n/3RPsZKQ/MGV6txgvv6pj1Qpulnye5IR+I03JZiAICZkFUeOzHKgHKfPEOBWk+ cO/vlL+H48qALXvacWH4UUKZOvTJsCYDnvLjq8mGztMLWaiKK7us4xulaY7b1HRECzsF zohTzyej5GpP2xMYPsWrNOeQTlyNBAv9cigHuHmVjcNGGdrfx+ZGwJSK7F5ZDceOOr6e LmLV2M2RWUvgbujMne6L35QdatjDKVirS8tqlct9vfjfu3M+r/tLI701gdizyJM/pHcB snyg== 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 j63si3733112pgc.474.2018.04.04.07.01.43; Wed, 04 Apr 2018 07:01:58 -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 S1751323AbeDDN7X convert rfc822-to-8bit (ORCPT + 99 others); Wed, 4 Apr 2018 09:59:23 -0400 Received: from mail.bootlin.com ([62.4.15.54]:49543 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750853AbeDDN7W (ORCPT ); Wed, 4 Apr 2018 09:59:22 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id AB01E20702; Wed, 4 Apr 2018 15:59:20 +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, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from dell-desktop.home (LStLambert-657-1-97-87.w90-63.abo.wanadoo.fr [90.63.216.87]) by mail.bootlin.com (Postfix) with ESMTPSA id 52F712037A; Wed, 4 Apr 2018 15:59:10 +0200 (CEST) Date: Wed, 4 Apr 2018 15:59:09 +0200 From: =?UTF-8?B?TXlsw6huZQ==?= Josserand To: Marc Zyngier Cc: linux@armlinux.org.uk, maxime.ripard@bootlin.com, wens@csie.org, mark.rutland@arm.com, robh+dt@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 Subject: Re: [PATCH v5 07/13] ARM: smp: Add initialization of CNTVOFF Message-ID: <20180404155909.148085f7@dell-desktop.home> In-Reply-To: <06308f46-ce7c-ddeb-ebca-abd1153138ba@arm.com> References: <20180403061836.3926-1-mylene.josserand@bootlin.com> <20180403061836.3926-8-mylene.josserand@bootlin.com> <06308f46-ce7c-ddeb-ebca-abd1153138ba@arm.com> Organization: Bootlin X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) 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 Hi Marc, Thank you for the review. On Wed, 4 Apr 2018 14:01:48 +0100 Marc Zyngier wrote: > Hi Mylène, > > On 03/04/18 07:18, Mylène Josserand wrote: > > 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 > > --- > > arch/arm/common/Makefile | 1 + > > arch/arm/common/smp_cntvoff.S | 35 +++++++++++++++++++++++++++++++++++ > > arch/arm/include/asm/smp_cntvoff.h | 8 ++++++++ > > 3 files changed, 44 insertions(+) > > create mode 100644 arch/arm/common/smp_cntvoff.S > > create mode 100644 arch/arm/include/asm/smp_cntvoff.h > > > > diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile > > index 70b4a14ed993..83117deb86c8 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) += smp_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/smp_cntvoff.S b/arch/arm/common/smp_cntvoff.S > > new file mode 100644 > > index 000000000000..65ed199a50fe > > --- /dev/null > > +++ b/arch/arm/common/smp_cntvoff.S > > @@ -0,0 +1,35 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright (c) 2018 Chen-Yu Tsai > > + * Copyright (c) 2018 Bootlin > > + * > > + * Chen-Yu Tsai > > + * Mylène Josserand > > Given that this is literally lifted from shmobile_init_cntvoff, the > whole attribution is a bit dubious. Yes, sorry, I will fix that. > > > + * > > + * SMP support for sunxi based systems with Cortex A7/A15 > > That's not restricted to sunxi, is it? Nope, I will update this line too (bad copy-paste from sunxi/headsmp.S...) > > > + * > > + */ > > + > > +#include > > +#include > > + > > +ENTRY(smp_init_cntvoff) > > The name doesn't quite reflect the usage constraints. This will only > work if used from secure, and is UNPREDICTABLE otherwise (see the CPS > instruction). Also, the "smp" prefix is quite misleading, as it only > affects the current CPU, and not any other. > > How about secure_cntvoff_init instead? Same thing for the file name. Sure, this name is fine for me. > > > + .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(smp_init_cntvoff) > > diff --git a/arch/arm/include/asm/smp_cntvoff.h b/arch/arm/include/asm/smp_cntvoff.h > > new file mode 100644 > > index 000000000000..59a95f7604ee > > --- /dev/null > > +++ b/arch/arm/include/asm/smp_cntvoff.h > > @@ -0,0 +1,8 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > + > > +#ifndef __ASMARM_ARCH_CNTVOFF_H > > +#define __ASMARM_ARCH_CNTVOFF_H > > + > > +extern void smp_init_cntvoff(void); > > + > > +#endif > > > > It'd be good to take this opportunity to refactor the shmobile code. I can do it in this series but I do not have any shmobile platforms so I will not be able to test my modifications (only compilation). If someone can test it for me (who?), it is okay for me to refactor this code :) Best regards, -- Mylène Josserand, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering http://bootlin.com