On Thu, Jul 12, 2018 at 04:37:26PM -0400, Pavel Tatashin wrote: > +static void *sparsemap_buf __meminitdata; > +static void *sparsemap_buf_end __meminitdata; > + > +void __init sparse_buffer_init(unsigned long size, int nid) > +{ > + BUG_ON(sparsemap_buf); Why do we need a BUG_ON() here? Looking at the code I cannot really see how we can end up with sparsemap_buf being NULL. Is it just for over-protection? > + sparsemap_buf = > + memblock_virt_alloc_try_nid_raw(size, PAGE_SIZE, > + __pa(MAX_DMA_ADDRESS), > + BOOTMEM_ALLOC_ACCESSIBLE, nid); In your previous version, you didn't pass a required alignment when setting up sparsemap_buf. size is already PMD_SIZE aligned, do we need to align it also to PAGE_SIZE? Thanks -- Oscar Salvador SUSE L3