From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 844B1C3279B for ; Wed, 4 Jul 2018 15:01:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 46756208B6 for ; Wed, 4 Jul 2018 15:01:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 46756208B6 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752819AbeGDPBY (ORCPT ); Wed, 4 Jul 2018 11:01:24 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:38984 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752573AbeGDPBV (ORCPT ); Wed, 4 Jul 2018 11:01:21 -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 9E07F18A; Wed, 4 Jul 2018 08:01:20 -0700 (PDT) Received: from big-swifty.misterjones.org (big-swifty.cambridge.arm.com [10.1.25.237]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 32ECB3F5A0; Wed, 4 Jul 2018 08:01:11 -0700 (PDT) Date: Wed, 04 Jul 2018 16:01:03 +0100 Message-ID: <861scjyrio.wl-marc.zyngier@arm.com> From: Marc Zyngier To: Andre Przywara Cc: Thomas Gleixner , Daniel Lezcano , Samuel Holland , Maxime Ripard , Chen-Yu Tsai , Catalin Marinas , Will Deacon , , , , Mark Rutland Subject: Re: [linux-sunxi] Re: [PATCH 0/2] Allwinner A64 timer workaround In-Reply-To: <55fc9e48-6329-df75-3a12-60cc42d91a31@arm.com> References: <20180511022751.9096-1-samuel@sholland.org> <2c16d5ab-38f7-8f3e-875c-19e8032f440a@arm.com> <5283f98e-6443-db7a-fe51-6379ed19002c@arm.com> <24b78819-5e3f-431f-3987-f7409742ef07@linaro.org> <1d75c538-9166-5eec-a08c-b168f9770bd1@arm.com> <1a36f63c-0259-bdcd-bb96-d5230c2564ea@arm.com> <55fc9e48-6329-df75-3a12-60cc42d91a31@arm.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/25.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) Organization: ARM Ltd MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 04 Jul 2018 15:44:36 +0100, Andre Przywara wrote: > > Hi, > > On 04/07/18 15:31, Thomas Gleixner wrote: > > On Wed, 4 Jul 2018, Andre Przywara wrote: > >> On 04/07/18 11:00, Thomas Gleixner wrote: > >>> On Wed, 4 Jul 2018, Marc Zyngier wrote: > >>>> On 04/07/18 09:23, Daniel Lezcano wrote: > >>>>> > >>>>> If the patches fix a bug which already exist, it makes sense to > >>>>> propagated the fix back to the stable versions. > >>>> > >>>> That's your call, but I'm not supportive of that decision, specially as > >>>> we have information from the person developing the workaround that this > >>>> doesn't fully address the issue. > >>> > >>> The patches should not be applied at all. Simply because they don't fix the > >>> issue completely. > >>> > >>> From a quick glance at various links and information about this, this very > >>> much smells like the FSL_ERRATUM_A008585. > >>> Has that been tried? It looks way more robust than the magic 11 bit > >>> crystal ball logic. > >> > >> The Freescale erratum is similar, but not identical [1]. > >> It seems like the A64 is less variable, so we can use a cheaper > >> workaround, which gets away with normally just one sysreg read. But then > >> again the newer error reports may actually suggest otherwise ... > >> > >> And as it currently stands, the Freescale erratum has the drawback of > >> relying on the CPU running much faster than the timer. The A64 can run > >> at 24 MHz (for power savings, or possibly during DVFS transitions), > >> which is the timer frequency. So subsequent counter reads will never > >> return the same value and the workaround times out. > > > > If that's the case then you need to find a different functional timer for > > time keeping. Having an erratic behaving timer for time keeping is not an > > option at all. > > That's not an option on arm64. There are other usable time sources in > the SoC, but the arch timer is somewhat mandatory for all practical > purposes on arm64. We rely on it in some many places that it's not > feasible to run without it. That's why we call it "architected" timer > after all ;-) > But I am quite confident that we can find a correct workaround. Maybe > it's really the TVAL (the downcounter) write which is the culprit here, > since the hardware actually writes "now() + TVAL" into the CVAL > (upcounter) register. This internal counter access may be flawed as well. You got it backward: CVAL is not a counter at all. It is a Comparator. And TVAL has an implicit read from the counter, as it is defined as "CVAL - CNT" (i.e. the number of ticks until the timer expires). So it might be worth trying to handle TVAL entirely in SW. But this relies on being able to read the timer and get a number of correct values out of it. One possibility would be to sacrifice precision and always ignore some of the bottom bits, but this is always going to suck terribly. The alternative is burn that thing, and pretend it never existed. M. -- Jazz is not dead, it just smell funny.