On Thu, Jan 20, 2022 at 09:24:22AM +0100, Michal Hocko wrote: > On Wed 19-01-22 20:25:54, Minchan Kim wrote: > > On Wed, Jan 19, 2022 at 10:20:22AM +0100, Michal Hocko wrote: > [...] > > > What does prevent you from calling lru_cache_{disable,enable} this way > > > with the existing implementation? AFAICS calls can be nested just fine. > > > Or am I missing something? > > > > It just increases more IPI calls since we drain the lru cache > > both upper layer and lower layer. That's I'd like to avoid > > in this patch. Just disable lru cache one time for entire > > allocation path. > > I do not follow. Once you call lru_cache_disable at the higher level > then no new pages are going to be added to the pcp caches. At the same > time existing caches are flushed so the inner lru_cache_disable will not > trigger any new IPIs. lru_cache_disable calls __lru_add_drain_all with force_all_cpus unconditionally so keep calling the IPI.