Received: by 10.223.164.202 with SMTP id h10csp4555094wrb; Mon, 20 Nov 2017 18:03:43 -0800 (PST) X-Google-Smtp-Source: AGs4zMYxETHpeXEsPuOEg9KWwnxHhybsaIrfv3DXQE2oiT8w9WbCD7fkObSlcm+e9vS3JNAmnTKO X-Received: by 10.159.246.134 with SMTP id c6mr15684782pls.371.1511229823409; Mon, 20 Nov 2017 18:03:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511229823; cv=none; d=google.com; s=arc-20160816; b=JtpwDIHgRtctDpweNENvDMV50hvt1gVhqfncYkJMPOYxO2cFxv5aJqGY3ubBFUItKv Cgmaao0mn8oH/QKUFHy5v9h8p0WAe+v1eukWntY7KDret8eani0PTUVElXeadUKRUn/e PoksTHpreIGOzdAAMqXXuK1p/cx7RC564GFHIMdaEfFz7wtvapmD7pUZ9XMystRge1Wb JvXgR7m7802tfAO6Mc+9OWirjOuBtCCojWrhwORhhagWBF7sk1P95Yb+nMptYMrDWHR3 So/+6m0U70Dh8d6rJA3b/xe3w+SDKc0HujO4TaMiNjyqicpPweiMPfZNoK2SBYoelarm tU0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=Hl7RzxjsQ67AKsUPwhlgAfSdZMXYu+yf8oAF0JkuFVI=; b=wRFvSx7KPj7sE1s7LOi3QUjD9WHiahBn4nyaYScl/A6VLA9ASAvGCNehwF0UfiOJ2O i/nKQFUV07f7qANipz2Wmq7uw5P/jzoud1kRiXvo9E/5tzifd434oK7r0BA2WB6p0Wrh LYL3rHSXYg5odAN6Ailda7kqGTL+ylrShWpp0wJgRBaa4wr5uYuCAdytrR/WVOI1cj4/ wqewrukAbpja/yGSqabhhtOeTTm503O2vZNtVhsZU909wCK0GnnJ6f46b+RXk7C0MapQ L/VU1cYb79OGnLYZl3UJt5vRS/pLV5LbpdtcdwYFpLF76aHsrhV6bnoWQ/lL+Cy8ykx8 YRgQ== 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 h1si2318306pgf.354.2017.11.20.18.03.32; Mon, 20 Nov 2017 18:03:43 -0800 (PST) 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 S1752151AbdKUCCw (ORCPT + 71 others); Mon, 20 Nov 2017 21:02:52 -0500 Received: from mga03.intel.com ([134.134.136.65]:48527 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751305AbdKUCCu (ORCPT ); Mon, 20 Nov 2017 21:02:50 -0500 Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Nov 2017 18:02:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,431,1505804400"; d="scan'208";a="4106219" Received: from ning-debian.sh.intel.com ([10.239.16.104]) by FMSMGA003.fm.intel.com with ESMTP; 20 Nov 2017 18:02:49 -0800 From: ning.a.zhang@intel.com To: linux-kernel@vger.kernel.org Cc: ning.a.zhang@intel.com Subject: [PATCH] x86/smpboot: set topology CPU mask before use. Date: Tue, 21 Nov 2017 10:02:46 +0800 Message-Id: <20171121020246.22007-1-ning.a.zhang@intel.com> X-Mailer: git-send-email 2.11.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zhang Ning we detect topology CPU mask in tsc is used before it is set, it leads to longer bootup time. let's check the code. smpboot.c:smp_callin() ---> calibarate.c:calibrate_delay() ---> tsc.c: calibrate_delay_is_known() ---> topology_core_cpumask(): read topology CPU mask ---> set_cpu_sibling_map(raw_smp_processor_id()) ---> cpumask_set_cpu(cpu, topology_core_cpumask(cpu)); from the calling chain, we know topology CPU mask is used before it actually set. So move set_cpu_sibling_map before calibrate_delay. Change-Id: I4eb8facb8751fe7aa2c6d2eac32437266d92ec00 Signed-off-by: Zhang Ning --- arch/x86/kernel/smpboot.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 36171bcd91f8..acee1ca3ef43 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -181,6 +181,12 @@ static void smp_callin(void) smp_store_cpu_info(cpuid); /* + * This must be done before setting cpu_online_mask + * or calling notify_cpu_starting. + */ + set_cpu_sibling_map(raw_smp_processor_id()); + + /* * Get our bogomips. * Update loops_per_jiffy in cpu_data. Previous call to * smp_store_cpu_info() stored a value that is close but not as @@ -190,11 +196,7 @@ static void smp_callin(void) cpu_data(cpuid).loops_per_jiffy = loops_per_jiffy; pr_debug("Stack at about %p\n", &cpuid); - /* - * This must be done before setting cpu_online_mask - * or calling notify_cpu_starting. - */ - set_cpu_sibling_map(raw_smp_processor_id()); + wmb(); notify_cpu_starting(cpuid); -- 2.11.0 From 1584733181992921270@xxx Wed Nov 22 02:55:34 +0000 2017 X-GM-THRID: 1584731675536497444 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread