pcpu_unit_page_offset(cpu, page_idx);
 }
 
-static void __maybe_unused pcpu_next_unpop(struct pcpu_chunk *chunk,
-                                          int *rs, int *re, int end)
+static void pcpu_next_unpop(unsigned long *bitmap, int *rs, int *re, int end)
 {
-       *rs = find_next_zero_bit(chunk->populated, end, *rs);
-       *re = find_next_bit(chunk->populated, end, *rs + 1);
+       *rs = find_next_zero_bit(bitmap, end, *rs);
+       *re = find_next_bit(bitmap, end, *rs + 1);
 }
 
-static void __maybe_unused pcpu_next_pop(struct pcpu_chunk *chunk,
-                                        int *rs, int *re, int end)
+static void pcpu_next_pop(unsigned long *bitmap, int *rs, int *re, int end)
 {
-       *rs = find_next_bit(chunk->populated, end, *rs);
-       *re = find_next_zero_bit(chunk->populated, end, *rs + 1);
+       *rs = find_next_bit(bitmap, end, *rs);
+       *re = find_next_zero_bit(bitmap, end, *rs + 1);
 }
 
 /*
- * (Un)populated page region iterators.  Iterate over (un)populated
- * page regions between @start and @end in @chunk.  @rs and @re should
- * be integer variables and will be set to start and end page index of
- * the current region.
+ * Bitmap region iterators.  Iterates over the bitmap between
+ * [@start, @end) in @chunk.  @rs and @re should be integer variables
+ * and will be set to start and end index of the current free region.
  */
-#define pcpu_for_each_unpop_region(chunk, rs, re, start, end)              \
-       for ((rs) = (start), pcpu_next_unpop((chunk), &(rs), &(re), (end)); \
-            (rs) < (re);                                                   \
-            (rs) = (re) + 1, pcpu_next_unpop((chunk), &(rs), &(re), (end)))
+#define pcpu_for_each_unpop_region(bitmap, rs, re, start, end)              \
+       for ((rs) = (start), pcpu_next_unpop((bitmap), &(rs), &(re), (end)); \
+            (rs) < (re);                                                    \
+            (rs) = (re) + 1, pcpu_next_unpop((bitmap), &(rs), &(re), (end)))
 
-#define pcpu_for_each_pop_region(chunk, rs, re, start, end)                \
-       for ((rs) = (start), pcpu_next_pop((chunk), &(rs), &(re), (end));   \
-            (rs) < (re);                                                   \
-            (rs) = (re) + 1, pcpu_next_pop((chunk), &(rs), &(re), (end)))
+#define pcpu_for_each_pop_region(bitmap, rs, re, start, end)                \
+       for ((rs) = (start), pcpu_next_pop((bitmap), &(rs), &(re), (end));   \
+            (rs) < (re);                                                    \
+            (rs) = (re) + 1, pcpu_next_pop((bitmap), &(rs), &(re), (end)))
 
 /**
  * pcpu_mem_zalloc - allocate memory
                page_end = PFN_UP(head + off + size);
 
                rs = page_start;
-               pcpu_next_unpop(chunk, &rs, &re, PFN_UP(off + this_size));
+               pcpu_next_unpop(chunk->populated, &rs, &re,
+                               PFN_UP(off + this_size));
                if (rs >= page_end)
                        return head;
                cand_off = re * PAGE_SIZE;
                page_start = PFN_DOWN(off);
                page_end = PFN_UP(off + size);
 
-               pcpu_for_each_unpop_region(chunk, rs, re, page_start, page_end) {
+               pcpu_for_each_unpop_region(chunk->populated, rs, re,
+                                          page_start, page_end) {
                        WARN_ON(chunk->immutable);
 
                        ret = pcpu_populate_chunk(chunk, rs, re);
        list_for_each_entry_safe(chunk, next, &to_free, list) {
                int rs, re;
 
-               pcpu_for_each_pop_region(chunk, rs, re, 0, chunk->nr_pages) {
+               pcpu_for_each_pop_region(chunk->populated, rs, re, 0,
+                                        chunk->nr_pages) {
                        pcpu_depopulate_chunk(chunk, rs, re);
                        spin_lock_irq(&pcpu_lock);
                        pcpu_chunk_depopulated(chunk, rs, re);
                        continue;
 
                /* @chunk can't go away while pcpu_alloc_mutex is held */
-               pcpu_for_each_unpop_region(chunk, rs, re, 0, chunk->nr_pages) {
+               pcpu_for_each_unpop_region(chunk->populated, rs, re, 0,
+                                          chunk->nr_pages) {
                        int nr = min(re - rs, nr_to_pop);
 
                        ret = pcpu_populate_chunk(chunk, rs, rs + nr);