Received: by 10.223.185.116 with SMTP id b49csp4970236wrg; Wed, 7 Mar 2018 04:19:52 -0800 (PST) X-Google-Smtp-Source: AG47ELsRKVbLHVN2t4Nwu1ykC8k7XBOOwxQfl7vWzIRkuNDs1jVFQFYIcArmMZzYtfnPEx8o2okq X-Received: by 2002:a17:902:2803:: with SMTP id e3-v6mr20098227plb.238.1520425192767; Wed, 07 Mar 2018 04:19:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520425192; cv=none; d=google.com; s=arc-20160816; b=hX2yGIqazNTCnAKx5eOeaBoR5D2eco088UIko3C+ly+/iChSfayqbRbU3Oj0t6JNv2 LRXQN06QZ5oN43NXnY4ideUSezFY0hpbSZbuPip3ydeeVc2HbBLFCKyTHEkbVihpNmHm Z/qqT2Is09FoTzv5oczS8LGCdsX1dVry/GMMcsG2pZjJmysSbHooeTd6niVGqn2eUuin hjJC1S+KkUxKvyNUKeVXtHFJAZegG69mEr/6gn6FpT7Hufuhenb8D2HkjCDAhShWO1AM JAQ+ewSMlQq+kod43KzNUHArbilBqVS7ZJ+uwsoMX3JioGpx6HB8ae+l+0oH5TDVqJ6I PO3g== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject :arc-authentication-results; bh=ebIj4fk0//RqGc4yKBBxbVgfBmZ3+W6NyB5PJ7esUDI=; b=bfnjPRaf4W+JLzofKcUGP6uHbJ48VVPNxSyphMWF6k6P3ZpvuB1YiHZ2PS28OoSn1W k5bhpZ71TdRQ0SUkRzFnc2s7WO1gwIuXTBXvZFxqU0VGpz/l3i2OquqWhKxKpU4x+G3W sEP5XYZ6L6m7wqE3sBaAlz8xgLYYCSpmn6XNogU6vVUAlIepDQALiHKas8NX6BVIfMl3 KaPkIWrRGCTfnd5xMx8MAEPYgra0XNLpmY3zbvMAir7nFc++Ikgs1tRlRVBufDZ13+Vl BTthVnNZJn9LD8SZ+pR/HshhWVo/Aol/lIpj0/Z9DvKxzCV/tLgxUSlxFojRdhO1lMxb 6tYw== 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 m16si11267526pgn.290.2018.03.07.04.19.36; Wed, 07 Mar 2018 04:19:52 -0800 (PST) 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 S1754279AbeCGMSj (ORCPT + 99 others); Wed, 7 Mar 2018 07:18:39 -0500 Received: from foss.arm.com ([217.140.101.70]:49570 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751150AbeCGMSh (ORCPT ); Wed, 7 Mar 2018 07:18:37 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D5A2C14; Wed, 7 Mar 2018 04:18:36 -0800 (PST) Received: from [10.1.207.62] (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DCB243F487; Wed, 7 Mar 2018 04:18:34 -0800 (PST) Subject: Re: [PATCH v4 10/10] ARM: sunxi: smp: Add initialization of CNTVOFF To: =?UTF-8?Q?Myl=c3=a8ne_Josserand?= , maxime.ripard@bootlin.com, linux@armlinux.org.uk, wens@csie.org, robh+dt@kernel.org, mark.rutland@arm.com Cc: devicetree@vger.kernel.org, quentin.schulz@bootlin.com, linux-kernel@vger.kernel.org, clabbe.montjoie@gmail.com, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org References: <20180223133742.26044-1-mylene.josserand@bootlin.com> <20180223133742.26044-11-mylene.josserand@bootlin.com> From: Marc Zyngier Organization: ARM Ltd Message-ID: <6329fbb6-13a1-41fe-f6cf-f2f0d4b2e5f9@arm.com> Date: Wed, 7 Mar 2018 12:18:33 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180223133742.26044-11-mylene.josserand@bootlin.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 23/02/18 13:37, Mylène Josserand wrote: > On Cortex-A7, the CNTVOFF register from arch timer is uninitialized. Only on A7? Is that specific to your platform? > 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. > > Signed-off-by: Mylène Josserand > --- > arch/arm/mach-sunxi/headsmp.S | 21 +++++++++++++++++++++ > arch/arm/mach-sunxi/sunxi.c | 4 ++++ > 2 files changed, 25 insertions(+) > > diff --git a/arch/arm/mach-sunxi/headsmp.S b/arch/arm/mach-sunxi/headsmp.S > index d5c97e945e69..605896251927 100644 > --- a/arch/arm/mach-sunxi/headsmp.S > +++ b/arch/arm/mach-sunxi/headsmp.S > @@ -65,9 +65,30 @@ ENTRY(sunxi_mc_smp_cluster_cache_enable) > first: .word sunxi_mc_smp_first_comer - . > ENDPROC(sunxi_mc_smp_cluster_cache_enable) > > +ENTRY(sunxi_init_cntvoff) > + /* > + * 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 */ > + instr_sync Since these CPUs are all ARMv7, you can use isb directly. Nobody wants to see more of the CP15 barriers. > + mov r0, #0 > + mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */ > + instr_sync > + mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */ > + instr_sync > + cps #SVC_MODE > + ret lr Given that this code is identical to the shmobile hack, it'd be good to make it common, one way or another. > +ENDPROC(sunxi_init_cntvoff) > + > #ifdef CONFIG_SMP > ENTRY(sunxi_boot) > bl sunxi_mc_smp_cluster_cache_enable > + bl sunxi_init_cntvoff > b secondary_startup > ENDPROC(sunxi_boot) > > diff --git a/arch/arm/mach-sunxi/sunxi.c b/arch/arm/mach-sunxi/sunxi.c > index 5e9602ce1573..4bb041492b54 100644 > --- a/arch/arm/mach-sunxi/sunxi.c > +++ b/arch/arm/mach-sunxi/sunxi.c > @@ -37,8 +37,12 @@ static const char * const sun6i_board_dt_compat[] = { > }; > > extern void __init sun6i_reset_init(void); > +extern void sunxi_init_cntvoff(void); > + > static void __init sun6i_timer_init(void) > { > + sunxi_init_cntvoff(); > + It is slightly odd that some CPUs get initialized from the early asm code, and some others do a detour via some C code. I'm sure this could be made to work > of_clk_init(NULL); > if (IS_ENABLED(CONFIG_RESET_CONTROLLER)) > sun6i_reset_init(); > Thanks, M. -- Jazz is not dead. It just smells funny...