aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-i386
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2007-05-12 14:15:24 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-12 14:26:22 -0400
commitf1d1a842d85acf34dd185027cb2c9b4fd13130ef (patch)
tree99ec45adca911aeb145a56d75a213ebb900b2175 /include/asm-i386
parent8df767dd759c1390f604814ee5b2d1489f9a59f7 (diff)
SLUB: i386 support
SLUB cannot run on i386 at this point because i386 uses the page->private and page->index field of slab pages for the pgd cache. Make SLUB run on i386 by replacing the pgd slab cache with a quicklist. Limit the changes as much as possible. Leave the improvised linked list in place etc etc. This has been working here for a couple of weeks now. Acked-by: William Lee Irwin III <wli@holomorphy.com> Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/asm-i386')
-rw-r--r--include/asm-i386/pgalloc.h2
-rw-r--r--include/asm-i386/pgtable.h5
2 files changed, 2 insertions, 5 deletions
diff --git a/include/asm-i386/pgalloc.h b/include/asm-i386/pgalloc.h
index 47430175b75f..d07b7afc2692 100644
--- a/include/asm-i386/pgalloc.h
+++ b/include/asm-i386/pgalloc.h
@@ -65,6 +65,4 @@ do { \
65#define pud_populate(mm, pmd, pte) BUG() 65#define pud_populate(mm, pmd, pte) BUG()
66#endif 66#endif
67 67
68#define check_pgt_cache() do { } while (0)
69
70#endif /* _I386_PGALLOC_H */ 68#endif /* _I386_PGALLOC_H */
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index edce9d51a676..2394589786ba 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -35,17 +35,16 @@ struct vm_area_struct;
35#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) 35#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
36extern unsigned long empty_zero_page[1024]; 36extern unsigned long empty_zero_page[1024];
37extern pgd_t swapper_pg_dir[1024]; 37extern pgd_t swapper_pg_dir[1024];
38extern struct kmem_cache *pgd_cache;
39extern struct kmem_cache *pmd_cache; 38extern struct kmem_cache *pmd_cache;
40extern spinlock_t pgd_lock; 39extern spinlock_t pgd_lock;
41extern struct page *pgd_list; 40extern struct page *pgd_list;
41void check_pgt_cache(void);
42 42
43void pmd_ctor(void *, struct kmem_cache *, unsigned long); 43void pmd_ctor(void *, struct kmem_cache *, unsigned long);
44void pgd_ctor(void *, struct kmem_cache *, unsigned long);
45void pgd_dtor(void *, struct kmem_cache *, unsigned long);
46void pgtable_cache_init(void); 44void pgtable_cache_init(void);
47void paging_init(void); 45void paging_init(void);
48 46
47
49/* 48/*
50 * The Linux x86 paging architecture is 'compile-time dual-mode', it 49 * The Linux x86 paging architecture is 'compile-time dual-mode', it
51 * implements both the traditional 2-level x86 page tables and the 50 * implements both the traditional 2-level x86 page tables and the