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

(-)file_not_specified_in_diff (-4 / +43 lines)
Line  Link Here
0
-- a/mm/page_alloc.c.orig 2004-04-29 17:38:14.184021976 -0300
0
++ b/mm/page_alloc.c 2004-04-29 17:47:27.906843312 -0300
Lines 46-51 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 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 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
 }

Return to bug 52522