|
@@ -4937,16 +4937,18 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
|
|
|
* and per-cpu initialisations
|
|
|
*/
|
|
|
memmap_pages = calc_memmap_size(size, realsize);
|
|
|
- if (freesize >= memmap_pages) {
|
|
|
- freesize -= memmap_pages;
|
|
|
- if (memmap_pages)
|
|
|
- printk(KERN_DEBUG
|
|
|
- " %s zone: %lu pages used for memmap\n",
|
|
|
- zone_names[j], memmap_pages);
|
|
|
- } else
|
|
|
- printk(KERN_WARNING
|
|
|
- " %s zone: %lu pages exceeds freesize %lu\n",
|
|
|
- zone_names[j], memmap_pages, freesize);
|
|
|
+ if (!is_highmem_idx(j)) {
|
|
|
+ if (freesize >= memmap_pages) {
|
|
|
+ freesize -= memmap_pages;
|
|
|
+ if (memmap_pages)
|
|
|
+ printk(KERN_DEBUG
|
|
|
+ " %s zone: %lu pages used for memmap\n",
|
|
|
+ zone_names[j], memmap_pages);
|
|
|
+ } else
|
|
|
+ printk(KERN_WARNING
|
|
|
+ " %s zone: %lu pages exceeds freesize %lu\n",
|
|
|
+ zone_names[j], memmap_pages, freesize);
|
|
|
+ }
|
|
|
|
|
|
/* Account for reserved pages */
|
|
|
if (j == 0 && freesize > dma_reserve) {
|