|
@@ -2606,7 +2606,7 @@ static int default_zonelist_order(void)
|
|
|
* ZONE_DMA and ZONE_DMA32 can be very small area in the system.
|
|
|
* If they are really small and used heavily, the system can fall
|
|
|
* into OOM very easily.
|
|
|
- * This function detect ZONE_DMA/DMA32 size and confgigures zone order.
|
|
|
+ * This function detect ZONE_DMA/DMA32 size and configures zone order.
|
|
|
*/
|
|
|
/* Is there ZONE_NORMAL ? (ex. ppc has only DMA zone..) */
|
|
|
low_kmem_size = 0;
|
|
@@ -2618,6 +2618,15 @@ static int default_zonelist_order(void)
|
|
|
if (zone_type < ZONE_NORMAL)
|
|
|
low_kmem_size += z->present_pages;
|
|
|
total_size += z->present_pages;
|
|
|
+ } else if (zone_type == ZONE_NORMAL) {
|
|
|
+ /*
|
|
|
+ * If any node has only lowmem, then node order
|
|
|
+ * is preferred to allow kernel allocations
|
|
|
+ * locally; otherwise, they can easily infringe
|
|
|
+ * on other nodes when there is an abundance of
|
|
|
+ * lowmem available to allocate from.
|
|
|
+ */
|
|
|
+ return ZONELIST_ORDER_NODE;
|
|
|
}
|
|
|
}
|
|
|
}
|