lkml.org 
[lkml]   [2006]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
Subject[PATCH 1/3] zone init check and report unaligned zone boundries
From
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@shadowen.org>
---
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@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-05-09 13:10    [W:0.233 / U:0.332 seconds]
©2003-2014 Jasper Spaans. Advertise on this site