From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752491AbdKHQIA (ORCPT ); Wed, 8 Nov 2017 11:08:00 -0500 Received: from mail.kernel.org ([198.145.29.99]:56618 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751763AbdKHQH7 (ORCPT ); Wed, 8 Nov 2017 11:07:59 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C1C19218DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Date: Wed, 8 Nov 2017 11:07:57 -0500 From: Steven Rostedt To: Peter Zijlstra Cc: Abderrahmane Benbachir , linux-kernel@vger.kernel.org, mingo@redhat.com, mathieu.desnoyers@efficios.com, Thomas Gleixner Subject: Re: [RFC PATCH v2] ftrace: support very early function tracing Message-ID: <20171108110757.5ef58e53@gandalf.local.home> In-Reply-To: <20171108081058.GT3165@worktop.lehotels.local> References: <1510098245.14960.3.camel@polymtl.ca> <20171107211706.328d7dd0@gandalf.local.home> <20171108081058.GT3165@worktop.lehotels.local> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 8 Nov 2017 09:10:58 +0100 Peter Zijlstra wrote: > On Tue, Nov 07, 2017 at 09:17:06PM -0500, Steven Rostedt wrote: > > > +#ifdef CONFIG_X86_TSC > > > + entry->clock = rdtsc(); > > > +#else > > > + entry->clock = trace_clock_local(); > > > +#endif > > > > +#ifdef CONFIG_X86_TSC > > > + cpu_khz = native_calibrate_cpu(); > > > +#endif > > > > +#ifdef CONFIG_X86_TSC > > > + ns = cycles_to_ns(entry->clock, cpu_khz); > > > +#else > > > + ns = entry->clock; > > > +#endif > > Yeah, no, not going to happen... Agreed. What you can do is have an: arch_early_trace_clock(); and in trace.c have: u64 __weak arch_early_trace_clock(void) { return trace_clock_local(); } u64 __weak arch_early_trace_clock_to_ns(u64 clock) { return clock; } and in x86 have: u64 arch_early_trace_clock(void) { return rdtsc(); } u64 arch_early_trace_clock_to_ns(u64 clock) { return cycles_to_ns(clock, cpu_khz); } Is that acceptable? -- Steve