X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fmm%2Fdiscontig.c;h=c4af9638dbfa133adacfabeb7b112167cbe63baa;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=7c392dc553b89659ce6041f09d5aae62d95ab50a;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c index 7c392dc55..c4af9638d 100644 --- a/arch/i386/mm/discontig.c +++ b/arch/i386/mm/discontig.c @@ -22,6 +22,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include #include @@ -30,7 +31,6 @@ #include #include #include -#include #include #include @@ -42,7 +42,7 @@ EXPORT_SYMBOL(node_data); bootmem_data_t node0_bdata; /* - * numa interface - we expect the numa architecture specific code to have + * numa interface - we expect the numa architecture specfic code to have * populated the following initialisation. * * 1) node_online_map - the map of all nodes configured (online) in the system @@ -352,6 +352,17 @@ void __init zone_sizes_init(void) { int nid; + /* + * Insert nodes into pgdat_list backward so they appear in order. + * Clobber node 0's links and NULL out pgdat_list before starting. + */ + pgdat_list = NULL; + for (nid = MAX_NUMNODES - 1; nid >= 0; nid--) { + if (!node_online(nid)) + continue; + NODE_DATA(nid)->pgdat_next = pgdat_list; + pgdat_list = NODE_DATA(nid); + } for_each_online_node(nid) { unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0};