Hi Christoph,
> Changelog > * Simple NUMA compatible allocation of hugepages in the nearest node > > Index: linux-2.6.9/mm/hugetlb.c > =================================================================== > --- linux-2.6.9.orig/mm/hugetlb.c 2004-10-22 13:28:27.000000000 -0700 > +++ linux-2.6.9/mm/hugetlb.c 2004-10-25 16:56:22.000000000 -0700 > @@ -32,14 +32,17 @@ > { > int nid = numa_node_id(); > struct page *page = NULL; > - > - if (list_empty(&hugepage_freelists[nid])) { > - for (nid = 0; nid < MAX_NUMNODES; ++nid) > - if (!list_empty(&hugepage_freelists[nid])) > - break; > + struct zonelist *zonelist = NODE_DATA(nid)->node_zonelists; I think the previous line should be replaced with struct zonelist *zonelist = NODE_DATA(nid)->node_zonelists + __GFP_HIGHMEM; because NODE_DATA(nid)->node_zonelists means a zonelist for __GFP_DMA zones. __GFP_HIGHMEM would be suitable for hugetlbpages. > + struct zone **zones = zonelist->zones; > + struct zone *z; > + int i; > + > + for(i=0; (z = zones[i])!= NULL; i++) { > + nid = z->zone_pgdat->node_id; > + if (!list_empty(&hugepage_freelists[nid])) > + break; > } > - if (nid >= 0 && nid < MAX_NUMNODES && > - !list_empty(&hugepage_freelists[nid])) { > + if (z) { > page = list_entry(hugepage_freelists[nid].next, > struct page, lru); > list_del(&page->lru); > > - Thanks, Hirokazu Takahashi. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/