aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-avr32
diff options
context:
space:
mode:
authorHaavard Skinnemoen <hskinnemoen@atmel.com>2007-08-03 07:29:01 -0400
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2007-08-15 10:36:56 -0400
commite7f3bac95e0bdfd520e065c4a29aad46190fcc99 (patch)
treec793a75643f183ccb083f1f309925a75c941df3f /include/asm-avr32
parent5221b34edfd05ac35c077e071095cf853325320f (diff)
[AVR32] Simplify pte_alloc_one{,_kernel}
There's really no need to retry an allocation with __GFP_REPEAT set. Also, use get_zeroed_page() and __GFP_ZERO to eliminate the extra call to clear_page() afterwards. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'include/asm-avr32')
-rw-r--r--include/asm-avr32/pgalloc.h22
1 files changed, 2 insertions, 20 deletions
diff --git a/include/asm-avr32/pgalloc.h b/include/asm-avr32/pgalloc.h
index 75248141c613..0e680f47209f 100644
--- a/include/asm-avr32/pgalloc.h
+++ b/include/asm-avr32/pgalloc.h
@@ -38,18 +38,9 @@ static inline void pgd_free(pgd_t *pgd)
38static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, 38static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
39 unsigned long address) 39 unsigned long address)
40{ 40{
41 int count = 0;
42 pte_t *pte; 41 pte_t *pte;
43 42
44 do { 43 pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_REPEAT);
45 pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT);
46 if (pte)
47 clear_page(pte);
48 else {
49 current->state = TASK_UNINTERRUPTIBLE;
50 schedule_timeout(HZ);
51 }
52 } while (!pte && (count++ < 10));
53 44
54 return pte; 45 return pte;
55} 46}
@@ -57,18 +48,9 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
57static inline struct page *pte_alloc_one(struct mm_struct *mm, 48static inline struct page *pte_alloc_one(struct mm_struct *mm,
58 unsigned long address) 49 unsigned long address)
59{ 50{
60 int count = 0;
61 struct page *pte; 51 struct page *pte;
62 52
63 do { 53 pte = alloc_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO);
64 pte = alloc_pages(GFP_KERNEL, 0);
65 if (pte)
66 clear_page(page_address(pte));
67 else {
68 current->state = TASK_UNINTERRUPTIBLE;
69 schedule_timeout(HZ);
70 }
71 } while (!pte && (count++ < 10));
72 54
73 return pte; 55 return pte;
74} 56}