diff options
author | Christoph Lameter <clameter@sgi.com> | 2007-05-12 14:15:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-12 14:26:22 -0400 |
commit | f1d1a842d85acf34dd185027cb2c9b4fd13130ef (patch) | |
tree | 99ec45adca911aeb145a56d75a213ebb900b2175 /include | |
parent | 8df767dd759c1390f604814ee5b2d1489f9a59f7 (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')
-rw-r--r-- | include/asm-i386/pgalloc.h | 2 | ||||
-rw-r--r-- | include/asm-i386/pgtable.h | 5 |
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)) |
36 | extern unsigned long empty_zero_page[1024]; | 36 | extern unsigned long empty_zero_page[1024]; |
37 | extern pgd_t swapper_pg_dir[1024]; | 37 | extern pgd_t swapper_pg_dir[1024]; |
38 | extern struct kmem_cache *pgd_cache; | ||
39 | extern struct kmem_cache *pmd_cache; | 38 | extern struct kmem_cache *pmd_cache; |
40 | extern spinlock_t pgd_lock; | 39 | extern spinlock_t pgd_lock; |
41 | extern struct page *pgd_list; | 40 | extern struct page *pgd_list; |
41 | void check_pgt_cache(void); | ||
42 | 42 | ||
43 | void pmd_ctor(void *, struct kmem_cache *, unsigned long); | 43 | void pmd_ctor(void *, struct kmem_cache *, unsigned long); |
44 | void pgd_ctor(void *, struct kmem_cache *, unsigned long); | ||
45 | void pgd_dtor(void *, struct kmem_cache *, unsigned long); | ||
46 | void pgtable_cache_init(void); | 44 | void pgtable_cache_init(void); |
47 | void paging_init(void); | 45 | void 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 |