From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752533AbdHNIAC (ORCPT ); Mon, 14 Aug 2017 04:00:02 -0400 Received: from mout.gmx.net ([212.227.17.20]:58541 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752314AbdHNIAA (ORCPT ); Mon, 14 Aug 2017 04:00:00 -0400 Message-ID: <1502697588.12319.199.camel@gmx.de> Subject: Re: [patch-rt] hotplug, hrtimer: Migrate expired/deferred timers during cpu offline From: Mike Galbraith To: Sebastian Andrzej Siewior Cc: Thomas Gleixner , LKML , linux-rt-users , Steven Rostedt Date: Mon, 14 Aug 2017 09:59:48 +0200 In-Reply-To: <1502439312.16425.19.camel@gmx.de> References: <20170804173823.lzuhnejlnxczr2lj@linutronix.de> <1501913583.7917.42.camel@gmx.de> <1501945043.5473.31.camel@gmx.de> <20170807073350.nwytftryfp34mrwi@linutronix.de> <1502094121.5568.22.camel@gmx.de> <1502186459.8042.31.camel@gmx.de> <1502438116.16425.18.camel@gmx.de> <1502439312.16425.19.camel@gmx.de> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.20.5 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:TqEybpfwfyKHA7svG7ejop8Wfd1eUNsbwMi0hZMuJaIm29fuApU Q0y5/+o9fkUqnOUYfA5Nf4nst2CPEWWDlBxF/Qe6ZzDALIf3aFPPKIPxIL6c24tOkRvgmaL q/aVysCkd0jFgBXdYJchYwsiBUCRY4qrGc/JyGHVp/TcoyHpCLwhbV6kzOtPWFBdiroAlRS fID9rV5Gh1rKTHuhRmilA== X-UI-Out-Filterresults: notjunk:1;V01:K0:DuO6/oQI+D4=:9ON/M4y9eONBImxXJaaaOg 3sNf0i5DL61Km6wv1aGzmoHgsPFuE7yF1jIyJtH30Re5Dl1ExB3cGNqQItBgDE/6ThA5quS+5 NYgH3vNdRhIJf5eJhCIasjBpwWaqZaJznM7pCLd3M+DqnTvIQSPtIY2c4Jje63P04ZzdIT6+x x7sCSKsRx5zHoOjzddvi6z63mHR+ljB5jO6HZuBxeUwl6/JQeENx2BH5a+8iixg6kIRP5wNfj PIcfYJUjaZVNRv1YUeSurwEvU9BOAlgQAVHssQ4Mw3wrYts3J6vt6kH49ojKa2zux6wTrzNen SeqLD7FslvbLElSqKnqXrd+GL4GgSrYVa9nYjVo0pQn999arU+C7FvirFxLh1v8vwKWUkDZxD 428yXRp4fImn7qIAKAB6ptdlaxXTcReycoYkBU/zxrdkXHZqTwPXkG74q20oiSLFN80Q2bMJ6 4hZ/l5ZFtufkaDr7DAZDCVq90+n2NCKAPW6e/Ob+v21/hPksYk4Szs82P4ikrgc7TkMwXZxgj S9PNP+qLPp7QI49t2iW6RFWE80e1bRctXfWLq40Q9qr0MA7hmj6sOkvdTzuVFk3Q+mL4cXisK r6jv6YUuF5Drc8Z0pZdWGsZ7wiZHlAi0b4J5AdqyjT36rBQ+uNVAs94QFyZ701siN7QIxf4Ze lHTMG/pcIQ7IlKdhbgulFg3Iv4tab/IAT1Ag1k+60eymEnkVufO8nCModqtTqR87TLdPwAa3y SFd1YEhnrGN4PfJ+6KSRDotgKQs+wzj+H1oatYaW5+M0OeFa1v8HSlsSV/YiuMPEuWU99oNL6 FuxlPyfhyBWpPDR3pk6cgEwFYPW9EqcPlMBN4fSdjWO9wCC33g= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2017-08-11 at 10:15 +0200, Mike Galbraith wrote: > On Fri, 2017-08-11 at 09:55 +0200, Mike Galbraith wrote: > > The below fixes the list debug explosion up. > > > > If we do not migrate expired/deferred timers during cpu offline, ->cb_entry > > will be corrupted by online initialization of base->expired, leading to a > > loud list debug complaint should someone call __remove_hrtimer() thereafter. > > > > Signed-off-by: Mike Galvraith > ahem.....................b (actually, I shouldn't have signed, question being why we now leave them lying about when we _apparently_ previously did not) > > --- > > kernel/time/hrtimer.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > --- a/kernel/time/hrtimer.c > > +++ b/kernel/time/hrtimer.c > > @@ -1802,6 +1802,19 @@ static void migrate_hrtimer_list(struct > > */ > > enqueue_hrtimer(timer, new_base); > > } > > + > > + /* > > + * Finally, migrate any expired timers deferred by RT. > > + */ > > + while (!list_empty(&old_base->expired)) { > > + struct list_head *entry = old_base->expired.next; > > + > > + timer = container_of(entry, struct hrtimer, cb_entry); (oops, forgot to change that back too. [scribble scribble]) > > + /* XXX: hm, perhaps defer again instead of enqueueing. */ > > + __remove_hrtimer(timer, old_base, HRTIMER_STATE_ENQUEUED, 0); > > + timer->base = new_base; > > + enqueue_hrtimer(timer, new_base); > > + } > > } > > > > int hrtimers_dead_cpu(unsigned int scpu)