Received: by 10.213.65.68 with SMTP id h4csp1377171imn; Mon, 19 Mar 2018 02:23:34 -0700 (PDT) X-Google-Smtp-Source: AG47ELtVyQd3vDImL1O1ZuLkzLgq5HnJXPyG4desxVrTVAeqk4ezu5lUmr0DbXvetYilO2eu9VPr X-Received: by 10.98.33.154 with SMTP id o26mr9726520pfj.54.1521451414303; Mon, 19 Mar 2018 02:23:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521451414; cv=none; d=google.com; s=arc-20160816; b=DxDrsr4SZIwwEl1jT877R0JOtVz2KTuTEW1Kvoeo6FWwx3EhIX/JvwZoRt8wmrac+9 ZZ8u63qWZkaT5Kvz/walc2AYslvlLdDmJoRN/I/2HF31YchLLpDV365gcLduhDDtwTYk rZ/eTf8KdKeIySjBwGebYIISTRhfon1vGOMEE/xC3WYuaCmfgcAxDMnYH/+OCZtPfM1C ZDUC0rXev6ibxMaLEhQp2PGHkAc46EyCxTZAWS6AY5CzCXBcri+I4dswkmMoPxJxTql3 dGikW9YxcQY2oJ+j82oDloxgT445PBWSg9ycr+dXmqRh8ZPCE+FSat/JWv+NeyKZTObv vtqw== 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=JvBZMShNJegqU6a5VIpYQkgR18aCDwNNuZlPNmvt1tQ=; b=BL48fDcKWcUQehjtFzOhpvinpD6058t5+InRwp+ionmu2MU6CeB2/zcauV77jji8vQ IAZCuHRcMXu/p7q+bx/X9AZq+QWrDOYKqzAabKsHf+H46/5750k3JEjzLKABabIctg8V okBaf9cpYgLY43rNQb4cROZBNb8vbvenNNiLzNplzFUsVguexW8lkdEuHG8egdyzJ2Ld 4PZI4Pw/FWq/nJ51+jCypaJT494eZB2GMWwFnlr67zg6VXX7uA8SKVBoc/QBIMTAhCM3 uGzAtS7vo/qg1m3oNobigfLzgSjSseL2PwQ5OQWRTUp1v1NosFP9+j4aNMWafClqEoRZ mx0Q== 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 k13si9235502pgo.578.2018.03.19.02.23.20; Mon, 19 Mar 2018 02:23:34 -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 S933370AbeCSJVw (ORCPT + 99 others); Mon, 19 Mar 2018 05:21:52 -0400 Received: from foss.arm.com ([217.140.101.70]:50320 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933106AbeCSJVp (ORCPT ); Mon, 19 Mar 2018 05:21:45 -0400 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 E7E6180D; Mon, 19 Mar 2018 02:21:44 -0700 (PDT) Received: from [10.1.206.75] (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 02A9F3F592; Mon, 19 Mar 2018 02:21:42 -0700 (PDT) Subject: Re: [PATCH v4 10/10] ARM: sunxi: smp: Add initialization of CNTVOFF To: =?UTF-8?Q?Myl=c3=a8ne_Josserand?= Cc: maxime.ripard@bootlin.com, linux@armlinux.org.uk, wens@csie.org, robh+dt@kernel.org, mark.rutland@arm.com, 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> <6329fbb6-13a1-41fe-f6cf-f2f0d4b2e5f9@arm.com> <20180318200715.363f3135@dell-desktop.home> From: Marc Zyngier Organization: ARM Ltd Message-ID: Date: Mon, 19 Mar 2018 09:21:41 +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: <20180318200715.363f3135@dell-desktop.home> 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 Hi Mylène, On 18/03/18 19:07, Mylène Josserand wrote: > Hello Mark, > > Please, excuse me for this late answer and thank you for the review! No worries. > > On Wed, 7 Mar 2018 12:18:33 +0000 > Marc Zyngier wrote: > >> 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? > > I do not really know other Allwinner's platforms about this subject. At > least, the sun9i-a80 which is a Cortex-a15/a7 does not need that but it > is necessary for sun8i-a83t which is a cortex-a7. Maybe, Chen-Yu or > Maxime could help us on it. My point was that having an uninitialized CNTVOFF is hardly a property of Cortex-A7. The same behaviour exists on all CPUs that implement the arch timers. What you have here is more a property of the platform, and its lack of firmware support. >> >>> 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. > > Okay, thanks, I will update that. > >> >>> + 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. > > Sure, I will try that. > May you have some hints to give me on how to implement it? You could move it to arch/arm/common, for example. > >> >>> +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 > > Renesa's code was also doing that so I thought it could be ok to do > it. It is not that it isn't OK, it is just a slightly bizarre construct. > Without this code in this timer_init function, it fails to initialize > cntvoff correctly: > http://code.bulix.org/i9fhc9-302612?raw > > How should I implement that? I would make it part of a path that all CPUs have to hit at bring-up time. You already have such a path in your SMP init code, so why not take advantage of that, making it completely uniform across the board? Thanks, M. -- Jazz is not dead. It just smells funny...