2004-06-20 09:20:34

by Geert Uytterhoeven

[permalink] [raw]
Subject: page allocation failure. order:0, mode:0x20


While running 2.6.7 on my Amiga, I got:

| cp: page allocation failure. order:0, mode:0x20
| Call Trace: [<000290a8>] __alloc_pages+0x230/0x250
| [<00159e9b>] sine_data+0x1142/0x1d95
| [<0001c9cc>] update_wall_time+0x16/0x3a
| [<000290f2>] __get_free_pages+0x2a/0x3e
| [<0002bc4a>] kmem_getpages+0x24/0xc2
| [<0002c54c>] cache_grow+0x7c/0x196
| [<0002c7ae>] cache_alloc_refill+0x148/0x17c
| [<0000220d>] init+0xc3/0xc8
| [<00001000>] _stext+0x0/0x1000
| [<0002cc62>] __kmalloc+0x4e/0x6a
| [<000f89be>] alloc_skb+0x3e/0x102
| [<000d8d90>] ariadne_rx+0xb2/0x208
| [<0000f204>] scosh+0x1a8/0x540
| [<000d8936>] ariadne_interrupt+0x70/0x23a
| [<00001000>] _stext+0x0/0x1000
| [<0000a67c>] amiga_do_irq_list+0x42/0x54
| [<0000abfa>] cia_handler+0x76/0x80
| [<00001000>] _stext+0x0/0x1000
| [<000063c6>] process_int+0x42/0x70
| [<000051de>] inthandler+0x2a/0x2c
| ...

But it looks like there are still opportunities to allocate memory:

| # free
| total used free shared buffers cached
| Mem: 10260 9844 416 0 240 5004
| -/+ buffers/cache: 4600 5660
| Swap: 33256 3796 29460

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


2004-06-20 10:25:14

by Nick Piggin

[permalink] [raw]
Subject: Re: page allocation failure. order:0, mode:0x20

Geert Uytterhoeven wrote:
> While running 2.6.7 on my Amiga, I got:
>
> | cp: page allocation failure. order:0, mode:0x20
> | Call Trace: [<000290a8>] __alloc_pages+0x230/0x250
> | [<00159e9b>] sine_data+0x1142/0x1d95
> | [<0001c9cc>] update_wall_time+0x16/0x3a
> | [<000290f2>] __get_free_pages+0x2a/0x3e
> | [<0002bc4a>] kmem_getpages+0x24/0xc2
> | [<0002c54c>] cache_grow+0x7c/0x196
> | [<0002c7ae>] cache_alloc_refill+0x148/0x17c
> | [<0000220d>] init+0xc3/0xc8
> | [<00001000>] _stext+0x0/0x1000
> | [<0002cc62>] __kmalloc+0x4e/0x6a
> | [<000f89be>] alloc_skb+0x3e/0x102
> | [<000d8d90>] ariadne_rx+0xb2/0x208
> | [<0000f204>] scosh+0x1a8/0x540
> | [<000d8936>] ariadne_interrupt+0x70/0x23a
> | [<00001000>] _stext+0x0/0x1000
> | [<0000a67c>] amiga_do_irq_list+0x42/0x54
> | [<0000abfa>] cia_handler+0x76/0x80
> | [<00001000>] _stext+0x0/0x1000
> | [<000063c6>] process_int+0x42/0x70
> | [<000051de>] inthandler+0x2a/0x2c
> | ...
>
> But it looks like there are still opportunities to allocate memory:
>
> | # free
> | total used free shared buffers cached
> | Mem: 10260 9844 416 0 240 5004
> | -/+ buffers/cache: 4600 5660
> | Swap: 33256 3796 29460
>

Not even atomic allocations memory are allowed to consume all memory.
A small amount is reserved for memory freeing (which sometimes
requires initial memory allocations).

The message should be harmless.

2004-06-20 10:31:59

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: page allocation failure. order:0, mode:0x20

On Sun, 20 Jun 2004, Nick Piggin wrote:
> Geert Uytterhoeven wrote:
> > While running 2.6.7 on my Amiga, I got:
> >
> > | cp: page allocation failure. order:0, mode:0x20
> > | Call Trace: [<000290a8>] __alloc_pages+0x230/0x250
> Not even atomic allocations memory are allowed to consume all memory.
> A small amount is reserved for memory freeing (which sometimes
> requires initial memory allocations).
>
> The message should be harmless.

Yep, the files I was copying got copied correctly.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2004-06-20 10:33:41

by Arjan van de Ven

[permalink] [raw]
Subject: Re: page allocation failure. order:0, mode:0x20

On Sun, 2004-06-20 at 12:25, Nick Piggin wrote:
> >
> > | # free
> > | total used free shared buffers cached
> > | Mem: 10260 9844 416 0 240 5004
> > | -/+ buffers/cache: 4600 5660
> > | Swap: 33256 3796 29460
> >
>
> Not even atomic allocations memory are allowed to consume all memory.
> A small amount is reserved for memory freeing (which sometimes
> requires initial memory allocations).
>
> The message should be harmless.

Since atomic allocations by definition need to be able to cope with
failure, how about a patch like this to not warn for this common and
legit case?

diff -urNp linux-1130/include/linux/gfp.h
linux-10000/include/linux/gfp.h
--- linux-1130/include/linux/gfp.h
+++ linux-10000/include/linux/gfp.h
@@ -46,7 +46,7 @@ struct vm_area_struct;
__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \

__GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP)

-#define GFP_ATOMIC (__GFP_HIGH)
+#define GFP_ATOMIC (__GFP_HIGH | __GFP_NOWARN)
#define GFP_NOIO (__GFP_WAIT)
#define GFP_NOFS (__GFP_WAIT | __GFP_IO)
#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part

2004-06-20 10:54:46

by Nick Piggin

[permalink] [raw]
Subject: Re: page allocation failure. order:0, mode:0x20

Arjan van de Ven wrote:
> On Sun, 2004-06-20 at 12:25, Nick Piggin wrote:
>
>>>| # free
>>>| total used free shared buffers cached
>>>| Mem: 10260 9844 416 0 240 5004
>>>| -/+ buffers/cache: 4600 5660
>>>| Swap: 33256 3796 29460
>>>
>>
>>Not even atomic allocations memory are allowed to consume all memory.
>>A small amount is reserved for memory freeing (which sometimes
>>requires initial memory allocations).
>>
>>The message should be harmless.
>
>
> Since atomic allocations by definition need to be able to cope with
> failure, how about a patch like this to not warn for this common and
> legit case?
>

CC'ed Andrew: I think it's his baby.

I guess we're at the point where we should quiet down things like
this. Although order-0 atomic allocation failures are pretty rare,
I'd consider leaving them in. Maybe a CONFIG option?