Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 62739
Collapse All | Expand All

(-)linux-2.4.22/mm/page_alloc.c (-3 / +42 lines)
Lines 46-51 static int lower_zone_reserve_ratio[MAX_ Link Here
46
46
47
int vm_gfp_debug = 0;
47
int vm_gfp_debug = 0;
48
48
49
static void FASTCALL(__free_pages_ok (struct page *page, unsigned int order));
50
51
static spinlock_t free_pages_ok_no_irq_lock = SPIN_LOCK_UNLOCKED;
52
struct page * free_pages_ok_no_irq_head;
53
54
static void do_free_pages_ok_no_irq(void * arg)
55
{
56
       struct page * page, * __page;
57
58
       spin_lock_irq(&free_pages_ok_no_irq_lock);
59
60
       page = free_pages_ok_no_irq_head;
61
       free_pages_ok_no_irq_head = NULL;
62
63
       spin_unlock_irq(&free_pages_ok_no_irq_lock);
64
65
       while (page) {
66
               __page = page;
67
               page = page->next_hash;
68
               __free_pages_ok(__page, __page->index);
69
       }
70
}
71
72
static struct tq_struct free_pages_ok_no_irq_task = {
73
       .routine        = do_free_pages_ok_no_irq,
74
};
75
76
49
/*
77
/*
50
 * Temporary debugging check.
78
 * Temporary debugging check.
51
 */
79
 */
Lines 81-87 int vm_gfp_debug = 0; Link Here
81
 * -- wli
109
 * -- wli
82
 */
110
 */
83
111
84
static void FASTCALL(__free_pages_ok (struct page *page, unsigned int order));
85
static void __free_pages_ok (struct page *page, unsigned int order)
112
static void __free_pages_ok (struct page *page, unsigned int order)
86
{
113
{
87
	unsigned long index, page_idx, mask, flags;
114
	unsigned long index, page_idx, mask, flags;
Lines 94-101 static void __free_pages_ok (struct page Link Here
94
	 * a reference to a page in order to pin it for io. -ben
121
	 * a reference to a page in order to pin it for io. -ben
95
	 */
122
	 */
96
	if (PageLRU(page)) {
123
	if (PageLRU(page)) {
97
		if (unlikely(in_interrupt()))
124
		if (unlikely(in_interrupt())) {
98
			BUG();
125
			unsigned long flags;
126
127
			spin_lock_irqsave(&free_pages_ok_no_irq_lock, flags);
128
			page->next_hash = free_pages_ok_no_irq_head;
129
			free_pages_ok_no_irq_head = page;
130
			page->index = order;
131
	
132
			spin_unlock_irqrestore(&free_pages_ok_no_irq_lock, flags);
133
	
134
			schedule_task(&free_pages_ok_no_irq_task);
135
			return;
136
		}
137
		
99
		lru_cache_del(page);
138
		lru_cache_del(page);
100
	}
139
	}
101
140

Return to bug 62739