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.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 B9A96C54E4A for ; Tue, 12 May 2020 09:19:25 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7E6BF20736 for ; Tue, 12 May 2020 09:19:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="LDKK6R2Z" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E6BF20736 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cCnyREA6xQIc3sIZRIs3yNr1B1wTMuOIajMNrKbUpiA=; b=LDKK6R2ZK3rl9N OWWFmlUvvw1NHvf8QMmA8RgFhVW2Z8IDoHxEKUGl3sPg8UzF3A2wdQcQcT5oPWbn50crfzY3qq8sJ uNcxzBSEj1LNqVeKH7F2s3DSN3EcEzoECrER3+OpZ/Vphc9HSUdV0arQCB2QOxKQdoIcT89ApLa9/ esl59eQkHq6u8ESJRuPI1/E4a09C/hn8qo4LFHmpFMzWxPHZzQXG0K6ViRIPfmqr7HfwSvAQJOiyd Rkgdr9LnJdEkp9M5/0UfcBCae38WEi0XfBJtmiFou2+SljxgAkdlYHqzeovq54sJu4lHQXBpeFxYF KRO47d6Pvs+aAGzM7uHg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYR4O-0004kJ-UH; Tue, 12 May 2020 09:19:24 +0000 Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=noisy.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYR4L-0004k1-Er; Tue, 12 May 2020 09:19:21 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id E8A75300261; Tue, 12 May 2020 11:19:18 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id CBCD3203AA832; Tue, 12 May 2020 11:19:18 +0200 (CEST) Date: Tue, 12 May 2020 11:19:18 +0200 From: Peter Zijlstra To: Leo Yan Subject: Re: [PATCH v2 0/3] arm64: perf_event: Fix time offset prior to epoch Message-ID: <20200512091918.GH2978@hirez.programming.kicks-ass.net> References: <20200505135544.6003-1-leo.yan@linaro.org> <20200511092200.GF2957@hirez.programming.kicks-ass.net> <20200511092519.GA3001@hirez.programming.kicks-ass.net> <20200512063812.GA20352@leoy-ThinkPad-X240s> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200512063812.GA20352@leoy-ThinkPad-X240s> X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Kate Stewart , Enrico Weigelt , Greg Kroah-Hartman , Alexander Shishkin , Marc Zyngier , Jiri Olsa , Daniel Lezcano , linux-kernel@vger.kernel.org, Arnaldo Carvalho de Melo , Paul Cercueil , Alexios Zavras , "Ahmed S. Darwish" , Ingo Molnar , linux-arm-kernel@lists.infradead.org, Catalin Marinas , Namhyung Kim , Thomas Gleixner , Will Deacon , "Ben Dooks \(Codethink\)" , Allison Randal Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, May 12, 2020 at 02:38:12PM +0800, Leo Yan wrote: > @@ -1165,28 +1166,26 @@ device_initcall(armv8_pmu_driver_init) > void arch_perf_update_userpage(struct perf_event *event, > struct perf_event_mmap_page *userpg, u64 now) > { > + struct clock_read_data *rd; > + unsigned int seq; > > /* > * Internal timekeeping for enabled/running/stopped times > * is always computed with the sched_clock. > */ > userpg->cap_user_time = 1; > + userpg->cap_user_time_zero = 1; > > + do { > + rd = sched_clock_read_begin(&seq); > + > + userpg->time_mult = rd->mult; > + userpg->time_shift = rd->shift; > + userpg->time_zero = rd->epoch_ns; > + > + userpg->time_zero -= (rd->epoch_cyc * rd->mult) >> rd->shift; Damn, I think this is broken vs the counter wrapping. So what the sched_clock code does is: cyc_to_ns((cyc - rd->epoch_cyc) & rd->sched_clock_mask, rd->mult, rd->shift) But because the perf interface assumes a simple linear relation, we can't express that properly. Now, your arm64 counter is 56 bits, so wrapping is rare, but still, we should probably fix that. And that probably needs an ABI extention *sigh*. > + > + } while (sched_clock_read_retry(seq)); > + > + userpg->time_offset = userpg->time_zero - now; > } _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel