Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp631037yba; Thu, 9 May 2019 03:37:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqyNRt7O9pb371gU/yVe8pQzGxOAwb3n0U2RBwX8YsHE9Grth4g6w8LsxDLNLEX7SZdBfMnW X-Received: by 2002:a63:2d41:: with SMTP id t62mr4380190pgt.113.1557398278970; Thu, 09 May 2019 03:37:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557398278; cv=none; d=google.com; s=arc-20160816; b=wl/fMguCAgrVM5CNkpgigj/G0vQXq60K/lJ+SajKvjcxxHUFnapkhPUwufUCBo8TSP lQLsCkLTMyVQhmFvfMail039eGpARy0ZfLEpkT0QwPUMGH0FiUhfZV85c7fGYPNqARsO PcoKwDq3AIc8pIwZ0FzYE4aAl7E2JYBGE6ePgKcx+Z13YUo1iA62qdsaZ4vDtnHMFJQG NM4/E/6Pqn9RuFP1Gk0u66yuSpnpmPmhcGyqW9xxo3l1qfB2ItOyTXDmzDdcTzDKmxtr cLJEdtFEdoNSSbUq0I8eVWEW4uH5JFk9iCryHmN8JEttMLUQsA743JXyG1v7NqF27oLr thDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date:dkim-signature:dkim-filter; bh=tLbyq6weNGqViJcUtv8zXM6fs0fS0h2cC8ZLK3zNds4=; b=UugZMxVU94UC6iFV0hAGQkhnbrGuhGVxI+/hZGDn9cH7IbfK1Sy3sVaucc1Bbzb0wq eGdrGmLBVx8ugXsesFdrls+wnSve5EckHIU6y+ayXBV6/Q3lGbzNmhytmVEgKfy7d35I DQM2Ob/3wY5uM8Bks5zJ0VMKcN5e0/yUsfFGRqwQQIodTS1SMg6KukYBvXb2JkX14Te/ KxsqbQHYDfNNb6o6GIZV2r3Ox/vZc95aJoxT/pWjX2cEwDRPfQQ9auSUbTgh5OK6/7U7 LDpp4slF7pCFPDEk7Wr2uv6SX8pFVAGfZzbzNHGKC8/425H3tfUCLqvPE+fi/welmBQj 5OAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zytor.com header.s=2019041745 header.b=lgSODcXz; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zytor.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d24si2399841pgm.405.2019.05.09.03.37.42; Thu, 09 May 2019 03:37:58 -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; dkim=pass header.i=@zytor.com header.s=2019041745 header.b=lgSODcXz; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zytor.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726681AbfEIKfm (ORCPT + 99 others); Thu, 9 May 2019 06:35:42 -0400 Received: from terminus.zytor.com ([198.137.202.136]:56087 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726078AbfEIKfl (ORCPT ); Thu, 9 May 2019 06:35:41 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id x49AZREL1505394 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Thu, 9 May 2019 03:35:28 -0700 DKIM-Filter: OpenDKIM Filter v2.11.0 terminus.zytor.com x49AZREL1505394 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com; s=2019041745; t=1557398128; bh=tLbyq6weNGqViJcUtv8zXM6fs0fS0h2cC8ZLK3zNds4=; h=Date:From:Cc:Reply-To:In-Reply-To:References:To:Subject:From; b=lgSODcXzBEJqvmpxkecFyY9/uvi884nTYFPFOpTdXPHVcjuWte9vsCRkMpROk73fJ l74hgh4fiddGBeMDf6zKlKIdfgzkN0WIdoLWXJzuyOqSbbAPCh90/mXX2gJ9odUU5w 0oUpzdG1Ax1M9HzQGK3JXp+oU2TNuZTiAjAfiwHdgrFVeXoBUJ7EH20fl8rG6BYmfy JEFJ+MNsr6mhhc1BjeznjaBCBwZ2OZUYypFMzxdFidJT9SKvl3r3TbL6lcYSAFrD29 9meqlvT2yVyVHHwb4Adx80ZUjBY8SudT0b25tcARkjq0HomVOLEv0Ce722CIWhWpLP H7hjufpCulBig== Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id x49AZR1w1505391; Thu, 9 May 2019 03:35:27 -0700 Date: Thu, 9 May 2019 03:35:27 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Daniel Drake Message-ID: Cc: tglx@linutronix.de, bp@alien8.de, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, peterz@infradead.org, hpa@zytor.com, luto@kernel.org, drake@endlessm.com, mingo@kernel.org Reply-To: linux-kernel@vger.kernel.org, bp@alien8.de, torvalds@linux-foundation.org, tglx@linutronix.de, luto@kernel.org, drake@endlessm.com, mingo@kernel.org, peterz@infradead.org, hpa@zytor.com In-Reply-To: References: <20190509055417.13152-3-drake@endlessm.com> <20190419083533.32388-1-drake@endlessm.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/tsc: Set LAPIC timer period to crystal clock frequency Git-Commit-ID: 2420a0b1798d7a78d1f9b395f09f3c80d92cc588 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-3.1 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_DATE_IN_FUTURE_96_Q autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 2420a0b1798d7a78d1f9b395f09f3c80d92cc588 Gitweb: https://git.kernel.org/tip/2420a0b1798d7a78d1f9b395f09f3c80d92cc588 Author: Daniel Drake AuthorDate: Thu, 9 May 2019 13:54:17 +0800 Committer: Ingo Molnar CommitDate: Thu, 9 May 2019 11:06:49 +0200 x86/tsc: Set LAPIC timer period to crystal clock frequency The APIC timer calibration (calibrate_APIC_timer()) can be skipped in cases where we know the APIC timer frequency. On Intel SoCs, we believe that the APIC is fed by the crystal clock; this would make sense, and the crystal clock frequency has been verified against the APIC timer calibration result on ApolloLake, GeminiLake, Kabylake, CoffeeLake, WhiskeyLake and AmberLake. Set lapic_timer_period based on the crystal clock frequency accordingly. APIC timer calibration would normally be skipped on modern CPUs by nature of the TSC deadline timer being used instead, however this change is still potentially useful, e.g. if the TSC deadline timer has been disabled with a kernel parameter. calibrate_APIC_timer() uses the legacy timer, but we are seeing new platforms that omit such legacy functionality, so avoiding such codepaths is becoming more important. Suggested-by: Thomas Gleixner Signed-off-by: Daniel Drake Reviewed-by: Thomas Gleixner Cc: Andy Lutomirski Cc: Borislav Petkov Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Peter Zijlstra Cc: len.brown@intel.com Cc: linux@endlessm.com Cc: rafael.j.wysocki@intel.com Link: http://lkml.kernel.org/r/20190509055417.13152-3-drake@endlessm.com Link: https://lkml.kernel.org/r/20190419083533.32388-1-drake@endlessm.com Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1904031206440.1967@nanos.tec.linutronix.de Signed-off-by: Ingo Molnar --- arch/x86/kernel/tsc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 6e6d933fb99c..8f47c4862c56 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -671,6 +671,16 @@ unsigned long native_calibrate_tsc(void) if (boot_cpu_data.x86_model == INTEL_FAM6_ATOM_GOLDMONT) setup_force_cpu_cap(X86_FEATURE_TSC_RELIABLE); +#ifdef CONFIG_X86_LOCAL_APIC + /* + * The local APIC appears to be fed by the core crystal clock + * (which sounds entirely sensible). We can set the global + * lapic_timer_period here to avoid having to calibrate the APIC + * timer later. + */ + lapic_timer_period = crystal_khz * 1000 / HZ; +#endif + return crystal_khz * ebx_numerator / eax_denominator; }