From: Zwane Mwaikambo <zwane@arm.linux.org.uk>

If the CPU doesn't support PSE we cannot use hugetlb pages.


 arch/i386/mm/hugetlbpage.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff -puN arch/i386/mm/hugetlbpage.c~hugetlb-needs-pse arch/i386/mm/hugetlbpage.c
--- 25/arch/i386/mm/hugetlbpage.c~hugetlb-needs-pse	2003-11-04 09:26:41.000000000 -0800
+++ 25-akpm/arch/i386/mm/hugetlbpage.c	2003-11-04 09:31:17.000000000 -0800
@@ -59,7 +59,7 @@ static struct page *alloc_fresh_huge_pag
 	return page;
 }
 
-void free_huge_page(struct page *page);
+static void free_huge_page(struct page *page);
 
 static struct page *alloc_hugetlb_page(void)
 {
@@ -275,7 +275,7 @@ follow_huge_pmd(struct mm_struct *mm, un
 }
 #endif
 
-void free_huge_page(struct page *page)
+static void free_huge_page(struct page *page)
 {
 	BUG_ON(page_count(page));
 	BUG_ON(page->mapping);
@@ -381,7 +381,7 @@ out:
 	return ret;
 }
 
-void update_and_free_page(struct page *page)
+static void update_and_free_page(struct page *page)
 {
 	int j;
 	struct page *map;
@@ -399,7 +399,7 @@ void update_and_free_page(struct page *p
 	__free_pages(page, HUGETLB_PAGE_ORDER);
 }
 
-int try_to_free_low(int count)
+static int try_to_free_low(int count)
 {
 	struct list_head *p;
 	struct page *page, *map;
@@ -430,7 +430,7 @@ int try_to_free_low(int count)
 	return count;
 }
 
-int set_hugetlb_mem_size(int count)
+static int set_hugetlb_mem_size(int count)
 {
 	int lcount;
 	struct page *page;
@@ -471,6 +471,8 @@ int set_hugetlb_mem_size(int count)
 int hugetlb_sysctl_handler(ctl_table *table, int write,
 		struct file *file, void *buffer, size_t *length)
 {
+	if (!cpu_has_pse)
+		return -ENODEV;
 	proc_dointvec(table, write, file, buffer, length);
 	htlbpage_max = set_hugetlb_mem_size(htlbpage_max);
 	return 0;
@@ -489,6 +491,9 @@ static int __init hugetlb_init(void)
 	int i;
 	struct page *page;
 
+	if (!cpu_has_pse)
+		return -ENODEV;
+
 	for (i = 0; i < MAX_NUMNODES; ++i)
 		INIT_LIST_HEAD(&hugepage_freelists[i]);
 

_