> 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.