[PATCH 1/3] zone init check and report unaligned zone boundries

From: Andy Whitcroft
Date: Tue May 09 2006 - 07:07:37 EST


zone init check and report unaligned zone boundries

We have a number of strict constraints on the layout of struct
page's for use with the buddy allocator. One of which is that zone
boundries must occur at MAX_ORDER page boundries. Add a check for
this during init.

Signed-off-by: Andy Whitcroft <apw@xxxxxxxxxxxx>
---
include/linux/mmzone.h | 5 +++++
mm/page_alloc.c | 4 ++++
2 files changed, 9 insertions(+)
diff -upN reference/include/linux/mmzone.h current/include/linux/mmzone.h
--- reference/include/linux/mmzone.h
+++ current/include/linux/mmzone.h
@@ -388,6 +388,11 @@ static inline int is_dma(struct zone *zo
return zone == zone->zone_pgdat->node_zones + ZONE_DMA;
}

+static inline unsigned long zone_boundry_align_pfn(unsigned long pfn)
+{
+ return pfn & ~((1 << MAX_ORDER) - 1);
+}
+
/* These two functions are used to setup the per zone pages min values */
struct ctl_table;
struct file;
diff -upN reference/mm/page_alloc.c current/mm/page_alloc.c
--- reference/mm/page_alloc.c
+++ current/mm/page_alloc.c
@@ -2078,6 +2078,10 @@ static void __init free_area_init_core(s
struct zone *zone = pgdat->node_zones + j;
unsigned long size, realsize;

+ if (zone_boundry_align_pfn(zone_start_pfn) != zone_start_pfn)
+ printk(KERN_CRIT "node %d zone %s missaligned "
+ "start pfn\n", nid, zone_names[j]);
+
realsize = size = zones_size[j];
if (zholes_size)
realsize -= zholes_size[j];
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/