From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965832AbcAZNKv (ORCPT ); Tue, 26 Jan 2016 08:10:51 -0500 Received: from www.linutronix.de ([62.245.132.108]:35801 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965790AbcAZNKs (ORCPT ); Tue, 26 Jan 2016 08:10:48 -0500 Date: Tue, 26 Jan 2016 14:09:36 +0100 (CET) From: Thomas Gleixner To: Petr Mladek cc: Jan Kara , Ben Hutchings , Tejun Heo , Sasha Levin , Shaohua Li , LKML , stable@vger.kernel.org, Daniel Bilik Subject: Re: Crashes with 874bbfe600a6 in 3.18.25 In-Reply-To: <20160126111438.GA731@pathway.suse.cz> Message-ID: References: <20160120211926.GJ10810@quack.suse.cz> <20160120213901.GA755895@devbig084.prn1.facebook.com> <20160121095234.GN10810@quack.suse.cz> <56A1817C.10300@oracle.com> <20160122160903.GH32380@htj.duckdns.org> <1453515623.3734.156.camel@decadent.org.uk> <20160126093400.GV24938@quack.suse.cz> <20160126111438.GA731@pathway.suse.cz> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1595136632-1453813777=:3886" X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-1595136632-1453813777=:3886 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: 8BIT On Tue, 26 Jan 2016, Petr Mladek wrote: > On Tue 2016-01-26 10:34:00, Jan Kara wrote: > > On Sat 23-01-16 17:11:54, Thomas Gleixner wrote: > > > On Sat, 23 Jan 2016, Ben Hutchings wrote: > > > > On Fri, 2016-01-22 at 11:09 -0500, Tejun Heo wrote: > > > > > > Looks like it requires more than trivial backport (I think). Tejun? > > > > > > > > > > The timer migration has changed quite a bit.  Given that we've never > > > > > seen vmstat work crashing in 3.18 era, I wonder whether the right > > > > > thing to do here is reverting 874bbfe600a6 from 3.18 stable? > > > > > > > > It's not just 3.18 that has this; 874bbfe600a6 was backported to all > > > > stable branches from 3.10 onward.  Only the 4.2-ckt branch has > > > > 22b886dd10180939. > > > > > > 22b886dd10180939 fixes a bug which was introduced with the timer wheel > > > overhaul in 4.2. So only 4.2/3 should have it backported. > > > > Thanks for explanation. So do I understand right that timers are always run > > on the calling CPU in kernels prior to 4.2 and thus commit 874bbfe600a6 (to > > run timer for delayed work on the calling CPU) doesn't make sense there? If > > that is true than reverting the commit from older stable kernels is > > probably the easiest way to resolve the crashes. > > The commit 874bbfe600a6 ("workqueue: make sure delayed work run in > local cpu") forces the timer to run on the local CPU. It might be correct > for vmstat. But I wonder if it might break some other delayed work > user that depends on running on different CPU. The default of add_timer() is to run on the current cpu. It only moves the timer to a different cpu when the power saving code says so. So 874bbfe600a6 enforces that the timer runs on the cpu on which queue_delayed_work() is called, but before that commit it was likely that the timer was queued on the calling cpu. So there is nothing which can depend on running on a different CPU, except callers of queue_delayed_work_on() which provide the target cpu explicitely. 874bbfe600a6 does not affect those callers at all. Now, what's different is: + if (cpu == WORK_CPU_UNBOUND) + cpu = raw_smp_processor_id(); dwork->cpu = cpu; So before that change dwork->cpu was set to WORK_CPU_UNBOUND. Now it's set to the current cpu, but I can't see how that matters. Thanks, tglx --8323329-1595136632-1453813777=:3886--