Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp2292154ybl; Thu, 15 Aug 2019 09:27:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqwpJLuVZDJ3CfPtHI7y1Wf1RioyMl9p/+yiv+z7nYLzh0CiLp2dwZG3dEPuvcPHqBoUTUoP X-Received: by 2002:a62:5c01:: with SMTP id q1mr6311136pfb.53.1565886430266; Thu, 15 Aug 2019 09:27:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565886430; cv=none; d=google.com; s=arc-20160816; b=KWCfm2wQdwLTs77lv1IK+s91+8qjUcNi0XvEa2vESs4Squl6vJmqhToBYUuG7S066l 2CiYEnJS3E0pvk1bk+M8nvEIvtNL0kBpA7kY+D32CDhG4u0bcyi7pqRntCspp6VfRkSZ cs+jy9HaKUjp4p2GV1l/txqKUclLyfUUVXE5eTH/K885CTgDTh+sVVPVbjZfTA5jD5Mi qHEQ5omP7+q/uI+FVhxN82B0fZ20PxOuw76WFDIhEekhuuVUjllIAH3K3cKX2sDyudYb wK6IdVY6vFJ18aXOVN1TEtzPcKT7duvC/iWM3xUuM52szGYzixfSmmAgDm7bCCE2mOhN spRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date; bh=8zYm9MnU3ruwtOCZ4dABUDadyv9YdULhXTIfL5S1OYw=; b=cJuBQskyvGk8VGEdaE+RQfxzZdIf27Oz2/zIvyn7S+xgz6LYi/I3IXLEn9gJUU9UbW WyuTfdEyQ1LK6w1CYChVm8yVAbzEO1oTjp0XMnxHjT/C0GHAjXMXu4nqoH/rMfwoKZyi Z/DOb7H7fc0CHI0mkpsASjhSvO4UIt1QrVLhh/8WStCbIoarW3mEjkkf7VLgESVy9v6E C9EOshCHjz27CdBzuhvBLp6ttew+Y0M2fYu9I0Nj9QPcpWxYHUHDO8eGOb3ReM/wRz7y w2kMweLLoSYXYcclFGgspfsCpUWOtv3SHui7WC60HFfNs0dXwTIg0Tm6X6fTVk+/2Rtz 1ofg== 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 6si2208195pla.88.2019.08.15.09.26.54; Thu, 15 Aug 2019 09:27:10 -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 S1732895AbfHOOQb (ORCPT + 99 others); Thu, 15 Aug 2019 10:16:31 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:39873 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732829AbfHOOQb (ORCPT ); Thu, 15 Aug 2019 10:16:31 -0400 Received: from pd9ef1cb8.dip0.t-ipconnect.de ([217.239.28.184] helo=nanos.glx-home) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1hyGY3-0006TL-He; Thu, 15 Aug 2019 16:16:15 +0200 Date: Thu, 15 Aug 2019 16:16:09 +0200 (CEST) From: Thomas Gleixner To: Felipe Balbi cc: Richard Cochran , netdev@vger.kernel.org, Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, "Christopher S . Hall" Subject: Re: [RFC PATCH 1/5] x86: tsc: add tsc to art helpers In-Reply-To: <87y2zvt1hk.fsf@gmail.com> Message-ID: References: <20190716072038.8408-1-felipe.balbi@linux.intel.com> <20190716072038.8408-2-felipe.balbi@linux.intel.com> <87y2zvt1hk.fsf@gmail.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Felipe, On Thu, 15 Aug 2019, Felipe Balbi wrote: > Thomas Gleixner writes: > > On Tue, 16 Jul 2019, Felipe Balbi wrote: > > > > So some information what those interfaces are used for and why they are > > needed would be really helpful. > > Okay, I have some more details about this. The TGPIO device itself uses > ART since TSC is not directly available to anything other than the > CPU. The 'problem' here is that reading ART incurs extra latency which > we would like to avoid. Therefore, we use TSC and scale it to > nanoseconds which, would be the same as ART to ns. Fine. But that's not really correct: TSC = art_to_tsc_offset + ART * scale; > >> +void get_tsc_ns(struct system_counterval_t *tsc_counterval, u64 *tsc_ns) Why is this not returning the result instead of having that pointer indirection? > >> +{ > >> + u64 tmp, res, rem; > >> + u64 cycles; > >> + > >> + tsc_counterval->cycles = clocksource_tsc.read(NULL); > >> + cycles = tsc_counterval->cycles; > >> + tsc_counterval->cs = art_related_clocksource; So this does more than returning the TSC time converted to nanoseconds. The function name should reflect this. Plus both functions want kernel-doc explaining what they do. > >> + rem = do_div(cycles, tsc_khz); > >> + > >> + res = cycles * USEC_PER_SEC; > >> + tmp = rem * USEC_PER_SEC; > >> + > >> + do_div(tmp, tsc_khz); > >> + res += tmp; > >> + > >> + *tsc_ns = res; > >> +} > >> +EXPORT_SYMBOL(get_tsc_ns); > >> + > >> +u64 get_art_ns_now(void) > >> +{ > >> + struct system_counterval_t tsc_cycles; > >> + u64 tsc_ns; > >> + > >> + get_tsc_ns(&tsc_cycles, &tsc_ns); > >> + > >> + return tsc_ns; > >> +} > >> +EXPORT_SYMBOL(get_art_ns_now); > > > > While the changes look innocuous I'm missing the big picture why this needs > > to emulate ART instead of simply using TSC directly. > > i don't think we're emulating ART here (other than the name in the > function). We're just reading TSC and converting to nanoseconds, right? Well, the function name says clearly: get_art_ns_now(). But you are not using ART, you use the TSC and derive the ART value from it (incorrectly). Thanks, tglx