This is a revised edition of the hugetlb demand page patches by Kenneth Chen which were discussed in the following thread in August 2004 http://marc.theaimsgroup.com/?t=109171285000004&r=1&w=2 The initial post by Ken was in April in http://marc.theaimsgroup.com/?l=linux-ia64&m=108189860401704&w=2 Hugetlb demand paging has been part of SuSE SLES 9 for awhile now and this patchset is intended to help hugetlb demand paging also get into the official Linux kernel. This first version of the patchset is a collection of the patches from the above mentioned thread in August. The key unresolved issue in that thread was the necessity of using update_cache_mmu after setting up a huge pte. update_cache_mmu is intended to update the mmu cache for a PAGESIZE page and not for a huge page. The solution adopted here (as already suggested as a possible solution in that thread) is to require an extension of the semantics of set_huge_pte: set_huge_pte() must also do for huge pages what update_cache_mmu does for PAGESIZE pages. For that purpose an additional address parameter was added to set_huge_pte() which will conviently break any old code. The patch included hopefully already fixes all occurrences of set_huge_pte. A linux-2.6.9-bk5 kernel with this patchset was build on IA64 and successfully tested using a performance test program for hugetlb pages. Note that this is the first patchset and is to be seen as discussion basis. not as a final patchset. Please review these patches. The patchset consists of 4 patches. 1/4 Demand Paging patch. This is the base and is mostly Ken's original work plus a fix that was posted later. 2/4 set_huge_pte update. This updates the set_huge_pte function for all architectures and insures that the arch specific action for update_mmu_cache is taken (which may be do nothing for some arches). Please verify that this really addresses the issues for each arch and that it is complete. 3/4 Overcommit patch: Mostly the original work by Ken plus a fix that he posted later. 4/4 Numa patch: Work by Raymund Bryant and myself at SGI to make the huge page allocator try to allocate local memory instead always starting at node zero. This definitely needs to be more sophisticated. Patches 1 to 3 must be applied together. The Numa patch is optional.