From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751871AbdBOCeM (ORCPT ); Tue, 14 Feb 2017 21:34:12 -0500 Received: from mga14.intel.com ([192.55.52.115]:37486 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751834AbdBOCeK (ORCPT ); Tue, 14 Feb 2017 21:34:10 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,163,1484035200"; d="scan'208";a="933988771" Subject: Re: [PATCH v7 1/5] x86: add simple udelay calibration To: Sergei Shtylyov , Greg Kroah-Hartman , Ingo Molnar References: <1487039241-596-1-git-send-email-baolu.lu@linux.intel.com> <1487039241-596-2-git-send-email-baolu.lu@linux.intel.com> Cc: Mathias Nyman , tglx@linutronix.de, peterz@infradead.org, linux-usb@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org From: Lu Baolu Message-ID: <58A3BE03.2010805@linux.intel.com> Date: Wed, 15 Feb 2017 10:33:39 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 02/14/2017 05:23 PM, Sergei Shtylyov wrote: > Hello! > > On 2/14/2017 5:27 AM, Lu Baolu wrote: > >> Add a simple udelay calibration in x86 architecture-specific >> boot-time initializations. This will get a workable estimate >> for loops_per_jiffy. Hence, udelay() could be used after this >> initialization. >> >> Cc: Ingo Molnar >> Cc: x86@kernel.org >> Signed-off-by: Lu Baolu >> --- >> arch/x86/kernel/setup.c | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c >> index 4cfba94..aab7faa 100644 >> --- a/arch/x86/kernel/setup.c >> +++ b/arch/x86/kernel/setup.c >> @@ -835,6 +835,26 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) >> return 0; >> } >> >> +static void __init simple_udelay_calibration(void) >> +{ >> + unsigned int tsc_khz, cpu_khz; >> + unsigned long lpj; >> + >> + if (!boot_cpu_has(X86_FEATURE_TSC)) >> + return; >> + >> + cpu_khz = x86_platform.calibrate_cpu(); >> + tsc_khz = x86_platform.calibrate_tsc(); >> + >> + tsc_khz = tsc_khz ? : cpu_khz; > > Why not: > > if (!tsc_khz) > tsc_khz = cpu_khz; > > It's more clear IMHO. Sure. Best regards, Lu Baolu > >> + if (!tsc_khz) >> + return; >> + >> + lpj = tsc_khz * 1000; >> + do_div(lpj, HZ); >> + loops_per_jiffy = lpj; >> +} >> + >> /* >> * Determine if we were loaded by an EFI loader. If so, then we have also been >> * passed the efi memmap, systab, etc., so we should use these data structures > [...] > > MBR, Sergei > >