On Wed, Aug 19, 2020 at 01:22:25PM +0200, Uladzislau Rezki wrote: > On Tue, Aug 18, 2020 at 08:04:20PM -0400, Joel Fernandes wrote: > > On Tue, Aug 18, 2020 at 6:02 PM Paul E. McKenney <paulmck@xxxxxxxxxx> wrote: > > > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > > > index b8ccd7b5af82..6decb9ad2421 100644 > > > > --- a/kernel/rcu/tree.c > > > > +++ b/kernel/rcu/tree.c > > > > @@ -2336,10 +2336,15 @@ int rcutree_dead_cpu(unsigned int cpu) > > > > { > > > > struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu); > > > > struct rcu_node *rnp = rdp->mynode; /* Outgoing CPU's rdp & rnp. */ > > > > + struct kfree_rcu_cpu *krcp; > > > > > > > > if (!IS_ENABLED(CONFIG_HOTPLUG_CPU)) > > > > return 0; > > > > > > > > + /* Drain the kcrp of this CPU. IRQs should be disabled? */ > > > > + krcp = this_cpu_ptr(&krc) > > > > + schedule_delayed_work(&krcp->monitor_work, 0); > > > > + > > > > > > > > A cpu can be offlined and its krp will be stuck until a shrinker is involved. > > > > Maybe be never. > > > > > > Does the same apply to its kmalloc() per-CPU caches? If so, I have a > > > hard time getting too worried about it. ;-) > > > > Looking at slab_offline_cpu() , that calls cancel_delayed_work_sync() > > on the cache reaper who's job is to flush the per-cpu caches. So I > > believe during CPU offlining, the per-cpu slab caches are flushed. > > > SLAB does it for sure, same as page allocator. There are special CPU-offline > callbacks for both cases to perform cleanup when CPU dies. Got it, thanks for confirming, makes sense. thanks, - Joel