P("nr_alloc", chunk->nr_alloc);
        P("max_alloc_size", chunk->max_alloc_size);
+       P("empty_pop_pages", chunk->nr_empty_pop_pages);
        P("free_size", chunk->free_size);
        P("contig_hint", chunk->contig_hint);
        P("sum_frag", sum_frag);
 
        chunk->immutable = true;
        bitmap_fill(chunk->populated, chunk->nr_pages);
        chunk->nr_populated = chunk->nr_pages;
+       chunk->nr_empty_pop_pages = chunk->nr_pages;
 
        chunk->contig_hint = chunk->free_size = map_size;
 
        if (chunk->start_offset) {
                /* hide the beginning of the bitmap */
+               chunk->nr_empty_pop_pages--;
+
                chunk->map[0] = 1;
                chunk->map[1] = chunk->start_offset;
                chunk->map_used = 1;
 
        if (chunk->end_offset) {
                /* hide the end of the bitmap */
+               chunk->nr_empty_pop_pages--;
+
                chunk->map[++chunk->map_used] = region_size | 1;
        }
 
 
        bitmap_set(chunk->populated, page_start, nr);
        chunk->nr_populated += nr;
+       chunk->nr_empty_pop_pages += nr;
        pcpu_nr_empty_pop_pages += nr;
 }
 
 
        bitmap_clear(chunk->populated, page_start, nr);
        chunk->nr_populated -= nr;
+       chunk->nr_empty_pop_pages -= nr;
        pcpu_nr_empty_pop_pages -= nr;
 }
 
 
        /* link the first chunk in */
        pcpu_first_chunk = chunk;
-       i = (pcpu_first_chunk->start_offset) ? 1 : 0;
-       pcpu_nr_empty_pop_pages +=
-               pcpu_count_occupied_pages(pcpu_first_chunk, i);
+       pcpu_nr_empty_pop_pages = pcpu_first_chunk->nr_empty_pop_pages;
        pcpu_chunk_relocate(pcpu_first_chunk, -1);
 
        pcpu_stats_chunk_alloc();