From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Sudeep Holla <sudeep.holla@arm.com>,
Valentin Schneider <valentin.schneider@arm.com>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Dietmar.Eggemann@arm.com,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
morten.rasmussen@arm.com, quentin.perret@arm.com,
Ingo Molnar <mingo@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.14 33/62] sched/core: Take the hotplug lock in sched_init_smp()
Date: Mon, 26 Nov 2018 11:51:14 +0100 [thread overview]
Message-ID: <20181126105053.417495927@linuxfoundation.org> (raw)
In-Reply-To: <20181126105050.592727680@linuxfoundation.org>
4.14-stable review patch. If anyone has any objections, please let me know.
------------------
[ Upstream commit 40fa3780bac2b654edf23f6b13f4e2dd550aea10 ]
When running on linux-next (8c60c36d0b8c ("Add linux-next specific files
for 20181019")) + CONFIG_PROVE_LOCKING=y on a big.LITTLE system (e.g.
Juno or HiKey960), we get the following report:
[ 0.748225] Call trace:
[ 0.750685] lockdep_assert_cpus_held+0x30/0x40
[ 0.755236] static_key_enable_cpuslocked+0x20/0xc8
[ 0.760137] build_sched_domains+0x1034/0x1108
[ 0.764601] sched_init_domains+0x68/0x90
[ 0.768628] sched_init_smp+0x30/0x80
[ 0.772309] kernel_init_freeable+0x278/0x51c
[ 0.776685] kernel_init+0x10/0x108
[ 0.780190] ret_from_fork+0x10/0x18
The static_key in question is 'sched_asym_cpucapacity' introduced by
commit:
df054e8445a4 ("sched/topology: Add static_key for asymmetric CPU capacity optimizations")
In this particular case, we enable it because smp_prepare_cpus() will
end up fetching the capacity-dmips-mhz entry from the devicetree,
so we already have some asymmetry detected when entering sched_init_smp().
This didn't get detected in tip/sched/core because we were missing:
commit cb538267ea1e ("jump_label/lockdep: Assert we hold the hotplug lock for _cpuslocked() operations")
Calls to build_sched_domains() post sched_init_smp() will hold the
hotplug lock, it just so happens that this very first call is a
special case. As stated by a comment in sched_init_smp(), "There's no
userspace yet to cause hotplug operations" so this is a harmless
warning.
However, to both respect the semantics of underlying
callees and make lockdep happy, take the hotplug lock in
sched_init_smp(). This also satisfies the comment atop
sched_init_domains() that says "Callers must hold the hotplug lock".
Reported-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Dietmar.Eggemann@arm.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: morten.rasmussen@arm.com
Cc: quentin.perret@arm.com
Link: http://lkml.kernel.org/r/1540301851-3048-1-git-send-email-valentin.schneider@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/sched/core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 4e89ed8a0fb2..3bc664662081 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5733,14 +5733,17 @@ void __init sched_init_smp(void)
/*
* There's no userspace yet to cause hotplug operations; hence all the
* CPU masks are stable and all blatant races in the below code cannot
- * happen.
+ * happen. The hotplug lock is nevertheless taken to satisfy lockdep,
+ * but there won't be any contention on it.
*/
+ cpus_read_lock();
mutex_lock(&sched_domains_mutex);
sched_init_domains(cpu_active_mask);
cpumask_andnot(non_isolated_cpus, cpu_possible_mask, cpu_isolated_map);
if (cpumask_empty(non_isolated_cpus))
cpumask_set_cpu(smp_processor_id(), non_isolated_cpus);
mutex_unlock(&sched_domains_mutex);
+ cpus_read_unlock();
/* Move init over to a non-isolated CPU */
if (set_cpus_allowed_ptr(current, non_isolated_cpus) < 0)
--
2.17.1
next prev parent reply other threads:[~2018-11-26 11:00 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-26 10:50 [PATCH 4.14 00/62] 4.14.84-stable review Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 01/62] cifs: dont dereference smb_file_target before null check Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 02/62] cifs: fix return value for cifs_listxattr Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 03/62] arm64: kprobe: make page to RO mode when allocate it Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 04/62] nvme-pci: fix conflicting p2p resource adds Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 05/62] ixgbe: fix MAC anti-spoofing filter after VFLR Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 06/62] reiserfs: propagate errors from fill_with_dentries() properly Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 07/62] hfs: prevent btree data loss on root split Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 08/62] hfsplus: " Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 09/62] um: Give start_idle_thread() a return code Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 10/62] drm/edid: Add 6 bpc quirk for BOE panel Greg Kroah-Hartman
2018-11-26 10:50 ` Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 11/62] platform/x86: intel_telemetry: report debugfs failure Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 12/62] clk: fixed-rate: fix of_node_get-put imbalance Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 13/62] perf symbols: Set PLT entry/header sizes properly on Sparc Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 14/62] fs/exofs: fix potential memory leak in mount option parsing Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 15/62] clk: samsung: exynos5420: Enable PERIS clocks for suspend Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 16/62] apparmor: Fix uninitialized value in aa_split_fqname Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 17/62] x86/earlyprintk: Add a force option for pciserial device Greg Kroah-Hartman
2018-11-26 10:50 ` [PATCH 4.14 18/62] platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 19/62] arm64: percpu: Initialize ret in the default case Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 20/62] s390/vdso: add missing FORCE to build targets Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 21/62] netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 22/62] netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 23/62] s390/mm: Fix ERROR: "__node_distance" undefined! Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 24/62] netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 25/62] netfilter: xt_IDLETIMER: add sysfs filename checking routine Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 26/62] s390/qeth: fix HiperSockets sniffer Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 27/62] hwmon: (ibmpowernv) Remove bogus __init annotations Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 28/62] Revert "drm/exynos/decon5433: implement frame counter" Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 29/62] clk: fixed-factor: fix of_node_get-put imbalance Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 30/62] lib/raid6: Fix arm64 test build Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 31/62] s390/perf: Change CPUM_CF return code in event init function Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 32/62] i2c: omap: Enable for ARCH_K3 Greg Kroah-Hartman
2018-11-26 13:24 ` Vignesh R
2018-11-26 15:01 ` Greg Kroah-Hartman
2018-11-26 10:51 ` Greg Kroah-Hartman [this message]
2018-11-26 10:51 ` [PATCH 4.14 34/62] perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 35/62] i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 36/62] qed: Fix memory/entry leak in qed_init_sp_request() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 37/62] qed: Fix blocking/unlimited SPQ entries leak Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 38/62] qed: Fix potential memory corruption Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 39/62] net: stmmac: Fix RX packet size > 8191 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 40/62] zram: close udev startup race condition as default groups Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 41/62] SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 42/62] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table uses RTC SRAM Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 43/62] perf machine: Add machine__is() to identify machine arch Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 44/62] perf tools: Fix kernel_start for PTI on x86 Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 45/62] perf machine: Add nr_cpus_avail() Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 46/62] perf machine: Workaround missing maps for x86 PTI entry trampolines Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 47/62] perf test code-reading: Fix perf_env setup for " Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 48/62] x86/mm: Move LDT remap out of KASLR region on 5-level paging Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 49/62] x86/ldt: Unmap PTEs for the slot before freeing LDT pages Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 50/62] media: v4l: event: Add subscription to list before calling "add" operation Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 51/62] MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 52/62] uio: Fix an Oops on load Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 53/62] usb: cdc-acm: add entry for Hiro (Conexant) modem Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 54/62] USB: quirks: Add no-lpm quirk for Raydium touchscreens Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 55/62] usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 56/62] misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 57/62] USB: misc: appledisplay: add 20" Apple Cinema Display Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 58/62] mtd: rawnand: atmel: fix OF child-node lookup Greg Kroah-Hartman
2018-11-26 14:16 ` Naresh Kamboju
2018-11-26 14:59 ` Greg Kroah-Hartman
2018-11-26 15:08 ` Boris Brezillon
2018-11-26 15:14 ` Greg Kroah-Hartman
2018-11-26 15:48 ` Johan Hovold
2018-11-29 8:08 ` Greg Kroah-Hartman
2018-11-26 15:16 ` Sasha Levin
2018-11-26 16:39 ` Matt Hart
2018-11-26 17:18 ` Sasha Levin
2018-11-26 10:51 ` [PATCH 4.14 59/62] drivers/misc/sgi-gru: fix Spectre v1 vulnerability Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 60/62] ACPI / platform: Add SMB0001 HID to forbidden_id_list Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 61/62] HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges Greg Kroah-Hartman
2018-11-26 10:51 ` [PATCH 4.14 62/62] libceph: fall back to sendmsg for slab pages Greg Kroah-Hartman
2018-11-26 17:11 ` [PATCH 4.14 00/62] 4.14.84-stable review kernelci.org bot
2018-11-26 23:50 ` Guenter Roeck
2018-11-27 0:04 ` shuah
2018-11-27 9:14 ` Jon Hunter
2018-11-27 9:14 ` Jon Hunter
2018-11-27 14:38 ` Greg Kroah-Hartman
2018-11-27 13:01 ` Naresh Kamboju
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181126105053.417495927@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=Dietmar.Eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=morten.rasmussen@arm.com \
--cc=peterz@infradead.org \
--cc=quentin.perret@arm.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=sudeep.holla@arm.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=valentin.schneider@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.