On Wed, 2020-04-29 at 01:02 +0200, Peter Zijlstra wrote: > On Tue, Apr 28, 2020 at 05:55:03PM -0500, Scott Wood wrote: > > On Wed, 2020-04-29 at 00:09 +0200, Peter Zijlstra wrote: > > > Also, if you move it this late, this is entirely the wrong place. If > > > you > > > do it after the context switch either use the balance_callback or put > > > it > > > in the idle path. > > > > > > But what Valentin said; this needs a fair bit of support, the whole > > > reason we've never done this is to avoid that double context switch... > > > > > > > balance_callback() enters with the rq lock held but BH not separately > > BH? softirqs you mean? Pray tell more. In https://lore.kernel.org/lkml/5122CD9C.9070702@xxxxxxxxxx/ the need to keep softirqs disabled during rebalance was brought up, but simply wrapping the lock dropping in local_bh_enable()/local_bh_disable() meant that local_bh_enable() would be called with interrupts disabled, which isn't allowed. > > disabled, which interferes with the ability to enable interrupts but not > > BH. > > It also gets called from rt_mutex_setprio() and __sched_setscheduler(), > > and > > I didn't want the caller of those to be stuck with the latency. > > You're not reading it right. Could you elaborate? -Scott