On Fri 11-05-18 10:17:55, Pavel Tatashin wrote: > > Thanks that helped me to see the problem. On the other hand isn't this a > > bit of an overkill? AFAICS this affects only NEED_PER_CPU_KM which is !SMP > > and DEFERRED_STRUCT_PAGE_INIT makes only very limited sense on UP, > > right? > > > Or do we have more such places? > > I do not know other places, but my worry is that trap_init() is arch > specific and we cannot guarantee that arches won't do virt to phys in > trap_init() in other places. Therefore, I think a proper fix is simply > allow DEFERRED_STRUCT_PAGE_INIT when it is safe to do virt to phys without > accessing struct pages, which is with SPARSEMEM_VMEMMAP. You are now disabling a potentially useful feature to SPARSEMEM users without having any evidence that they do suffer from the issue which is kinda sad. Especially when the only known offender is a UP pcp allocator implementation. I will not insist of course but it seems like your fix doesn't really prevent virt_to_page or other direct page access either. -- Michal Hocko SUSE Labs