|
@@ -886,11 +886,10 @@ static void pcpu_depopulate_chunk(struct pcpu_chunk *chunk, int off, int size)
|
|
|
int rs, re;
|
|
|
|
|
|
/* quick path, check whether it's empty already */
|
|
|
- pcpu_for_each_unpop_region(chunk, rs, re, page_start, page_end) {
|
|
|
- if (rs == page_start && re == page_end)
|
|
|
- return;
|
|
|
- break;
|
|
|
- }
|
|
|
+ rs = page_start;
|
|
|
+ pcpu_next_unpop(chunk, &rs, &re, page_end);
|
|
|
+ if (rs == page_start && re == page_end)
|
|
|
+ return;
|
|
|
|
|
|
/* immutable chunks can't be depopulated */
|
|
|
WARN_ON(chunk->immutable);
|
|
@@ -941,11 +940,10 @@ static int pcpu_populate_chunk(struct pcpu_chunk *chunk, int off, int size)
|
|
|
int rs, re, rc;
|
|
|
|
|
|
/* quick path, check whether all pages are already there */
|
|
|
- pcpu_for_each_pop_region(chunk, rs, re, page_start, page_end) {
|
|
|
- if (rs == page_start && re == page_end)
|
|
|
- goto clear;
|
|
|
- break;
|
|
|
- }
|
|
|
+ rs = page_start;
|
|
|
+ pcpu_next_pop(chunk, &rs, &re, page_end);
|
|
|
+ if (rs == page_start && re == page_end)
|
|
|
+ goto clear;
|
|
|
|
|
|
/* need to allocate and map pages, this chunk can't be immutable */
|
|
|
WARN_ON(chunk->immutable);
|