From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753367AbbELHk2 (ORCPT ); Tue, 12 May 2015 03:40:28 -0400 Received: from terminus.zytor.com ([198.137.202.10]:44784 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753330AbbELHkX (ORCPT ); Tue, 12 May 2015 03:40:23 -0400 Date: Tue, 12 May 2015 00:39:53 -0700 From: tip-bot for Len Brown Message-ID: Cc: hpa@zytor.com, mingo@kernel.org, linux-kernel@vger.kernel.org, jschoenh@amazon.de, arjan@linux.intel.com, tglx@linutronix.de, len.brown@intel.com, torvalds@linux-foundation.org, alan@linux.intel.com, bp@alien8.de Reply-To: hpa@zytor.com, mingo@kernel.org, jschoenh@amazon.de, linux-kernel@vger.kernel.org, alan@linux.intel.com, bp@alien8.de, arjan@linux.intel.com, tglx@linutronix.de, torvalds@linux-foundation.org, len.brown@intel.com In-Reply-To: <021ce30c88f216ad39686646421194dc25671e55.1431379433.git.len.brown@intel.com> References: <021ce30c88f216ad39686646421194dc25671e55.1431379433.git.len.brown@intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/smp/boot: Remove 10ms delay from cpu_up() on modern processors Git-Commit-ID: 1a744cb356c57303fc97eb15a298032170f841fa 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 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 1a744cb356c57303fc97eb15a298032170f841fa Gitweb: http://git.kernel.org/tip/1a744cb356c57303fc97eb15a298032170f841fa Author: Len Brown AuthorDate: Mon, 11 May 2015 17:27:10 -0400 Committer: Ingo Molnar CommitDate: Tue, 12 May 2015 08:54:33 +0200 x86/smp/boot: Remove 10ms delay from cpu_up() on modern processors Modern processor familes do not require the 10ms delay in cpu_up() to de-assert INIT. This speeds up boot and resume by 10ms per (application) processor. Signed-off-by: Len Brown Cc: Alan Cox Cc: Arjan van de Ven Cc: Borislav Petkov Cc: H. Peter Anvin Cc: Jan H. Schönherr Cc: Linus Torvalds Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/021ce30c88f216ad39686646421194dc25671e55.1431379433.git.len.brown@intel.com Signed-off-by: Ingo Molnar --- arch/x86/kernel/smpboot.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 0629a8e..85bd6aa 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -521,6 +521,7 @@ void __inquire_remote_apic(int apicid) * many cores and don't require that delay. * * Cmdline "init_cpu_udelay=" is available to over-ride this delay. + * Modern processor families are quirked to remove the delay entirely. */ #define UDELAY_10MS_DEFAULT 10000 @@ -534,6 +535,18 @@ static int __init cpu_init_udelay(char *str) } early_param("cpu_init_udelay", cpu_init_udelay); +static void __init smp_quirk_init_udelay(void) +{ + /* if cmdline changed it from default, leave it alone */ + if (init_udelay != UDELAY_10MS_DEFAULT) + return; + + /* if modern processor, use no delay */ + if (((boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) && (boot_cpu_data.x86 == 6)) || + ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && (boot_cpu_data.x86 >= 0xF))) + init_udelay = 0; +} + /* * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this @@ -1210,6 +1223,8 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) uv_system_init(); set_mtrr_aps_delayed_init(); + + smp_quirk_init_udelay(); } void arch_enable_nonboot_cpus_begin(void)