Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4779284ooa; Tue, 14 Aug 2018 10:25:45 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwA8efDqhcb1kFWEl+gdwFPQB7uIuW1v8s4+QeHssuniaJI5hhDxBlmf5y+vb6jNQIRqVEP X-Received: by 2002:a63:f18:: with SMTP id e24-v6mr22149179pgl.320.1534267545103; Tue, 14 Aug 2018 10:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534267545; cv=none; d=google.com; s=arc-20160816; b=fF9/tjay186JnMQ5bZ19m0BbEvVlKbtoTdMyhyeLlLbYvOE2p+W6GBjvDkABays7eI fhY00vn+u4JipVmlXHPylJaUCAcI+i9HpUzwFThUOcdG7cbRyTDySZOkBwqYhpPQnFvh O1YSQR1zx48ulHJfTbbfwANHgomO/RhTN9/KTxcr1pyYuLV9BeUi64YuCi2zEA9/RJoP IJCBhooGHKZLF1i7K8zZzRsTz4X4hdtcna1SORUZIVmRbVXrN13G8dFpElSFawCE/Ay8 sf0jaiCiWl4kR6QatySPFN2oqojWf5zEmF37VOu5HouW/ZkPkO4/ttwoM90hxgbTHtxf DOPw== 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 :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=17EcwUMzbkjRpmtNsWOAvv15yUJGupeKDuoaLw65ok4=; b=h0jE/Zcftw6E7Sn3t2j3cJvlHFdHSJAFTx1kvARUvlmgnMTzJ9h5BgWGttWsvzGJkW +NhoUnLoJyxCSt96dh6+TGb4Sb19eFd8TQK6A8gXrW3yS8tqpoeT9ncp8OnJC92sY1rg wmf36l5wPz5YkwMOOOLeimqpjU1mJ4yJ1zxLyDzZL2vH4J4anDxcZNq+SIXm/Bllqvie xvfEzEdz74F4pE1UOwr8SGk9lF/SPNfj4gIys80270mWRx+gwT5Qxy5nWgqgiNQXft2b 1ZvHbN2UZWe70qrpF9WoJsP52ZgzNQIiEuZXOn+c2tFpPpWccI2IwUxNLGIkwbg70xGs hkmg== 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 f128-v6si16065147pfg.137.2018.08.14.10.25.29; Tue, 14 Aug 2018 10:25:45 -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 S2387902AbeHNUM3 (ORCPT + 99 others); Tue, 14 Aug 2018 16:12:29 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:51316 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387747AbeHNUM2 (ORCPT ); Tue, 14 Aug 2018 16:12:28 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 88420C5C; Tue, 14 Aug 2018 17:24:22 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Peter Zijlstra , Thomas Gleixner , Konrad Rzeszutek Wilk , Ingo Molnar Subject: [PATCH 4.18 14/79] sched/smt: Update sched_smt_present at runtime Date: Tue, 14 Aug 2018 19:16:33 +0200 Message-Id: <20180814171337.353808886@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180814171336.799314117@linuxfoundation.org> References: <20180814171336.799314117@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Peter Zijlstra The static key sched_smt_present is only updated at boot time when SMT siblings have been detected. Booting with maxcpus=1 and bringing the siblings online after boot rebuilds the scheduling domains correctly but does not update the static key, so the SMT code is not enabled. Let the key be updated in the scheduler CPU hotplug code to fix this. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner Reviewed-by: Konrad Rzeszutek Wilk Acked-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- kernel/sched/core.c | 30 ++++++++++++------------------ kernel/sched/fair.c | 1 + 2 files changed, 13 insertions(+), 18 deletions(-) --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5774,6 +5774,18 @@ int sched_cpu_activate(unsigned int cpu) struct rq *rq = cpu_rq(cpu); struct rq_flags rf; +#ifdef CONFIG_SCHED_SMT + /* + * The sched_smt_present static key needs to be evaluated on every + * hotplug event because at boot time SMT might be disabled when + * the number of booted CPUs is limited. + * + * If then later a sibling gets hotplugged, then the key would stay + * off and SMT scheduling would never be functional. + */ + if (cpumask_weight(cpu_smt_mask(cpu)) > 1) + static_branch_enable_cpuslocked(&sched_smt_present); +#endif set_cpu_active(cpu, true); if (sched_smp_initialized) { @@ -5871,22 +5883,6 @@ int sched_cpu_dying(unsigned int cpu) } #endif -#ifdef CONFIG_SCHED_SMT -DEFINE_STATIC_KEY_FALSE(sched_smt_present); - -static void sched_init_smt(void) -{ - /* - * We've enumerated all CPUs and will assume that if any CPU - * has SMT siblings, CPU0 will too. - */ - if (cpumask_weight(cpu_smt_mask(0)) > 1) - static_branch_enable(&sched_smt_present); -} -#else -static inline void sched_init_smt(void) { } -#endif - void __init sched_init_smp(void) { sched_init_numa(); @@ -5908,8 +5904,6 @@ void __init sched_init_smp(void) init_sched_rt_class(); init_sched_dl_class(); - sched_init_smt(); - sched_smp_initialized = true; } --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6237,6 +6237,7 @@ static inline int find_idlest_cpu(struct } #ifdef CONFIG_SCHED_SMT +DEFINE_STATIC_KEY_FALSE(sched_smt_present); static inline void set_idle_cores(int cpu, int val) {