2004-11-12 12:03:38

by Justin Piszcz

[permalink] [raw]
Subject: Non-e1000, 2.6.9 page allocation failures with OSS/audio.

The other page allocation failures were due to the e1000+TSO segmentation
offload issue.

I use OSS sound drivers with 2.6.9.

Here are the options I use and have been using for quite some time without
error:

1] <*> Open Sound System (DEPRECATED)
2] <*> OSS sound modules
3] [*] Verbose initialisation
4] [*] Persistent DMA buffers
5] <*> Crystal CS4232 based (PnP) cards

My LILO append line as is follows:
append="cs4232=0x530,5,1,0,388,5 mce video=atyfb:1600x1200-16@60"

What happened to the page allocation / memory subsystem in 2.6.9?
I do not recall getting these with 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8 or
2.6.8.1.

gaim: page allocation failure. order:4, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cfe8>] DMAbuf_open+0x178/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c015d8e3>] cdev_get+0x53/0xc0
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:3, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cfe8>] DMAbuf_open+0x178/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c015d8e3>] cdev_get+0x53/0xc0
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:4, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cf2d>] DMAbuf_open+0xbd/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c015d8e3>] cdev_get+0x53/0xc0
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:3, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cf2d>] DMAbuf_open+0xbd/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c015d8e3>] cdev_get+0x53/0xc0
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:4, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cfe8>] DMAbuf_open+0x178/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:3, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cfe8>] DMAbuf_open+0x178/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:4, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cf2d>] DMAbuf_open+0xbd/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb
gaim: page allocation failure. order:3, mode:0x21
[<c0139227>] __alloc_pages+0x247/0x3b0
[<c01393a8>] __get_free_pages+0x18/0x40
[<c035c7ca>] sound_alloc_dmap+0xaa/0x1b0
[<c0364d50>] ad_mute+0x20/0x40
[<c035cb9f>] open_dmap+0x1f/0x100
[<c035cf2d>] DMAbuf_open+0xbd/0x1d0
[<c035a98a>] audio_open+0xba/0x280
[<c0359b1c>] sound_open+0xac/0x110
[<c0358e1e>] soundcore_open+0x1ce/0x300
[<c0358c50>] soundcore_open+0x0/0x300
[<c015d5a4>] chrdev_open+0x104/0x250
[<c015d4a0>] chrdev_open+0x0/0x250
[<c0152e02>] dentry_open+0x1d2/0x270
[<c0152c1c>] filp_open+0x5c/0x70
[<c0152ef5>] get_unused_fd+0x55/0xf0
[<c0153059>] sys_open+0x49/0x90
[<c010405b>] syscall_call+0x7/0xb


2004-11-12 12:18:15

by Nick Piggin

[permalink] [raw]
Subject: Re: Non-e1000, 2.6.9 page allocation failures with OSS/audio.

Justin Piszcz wrote:
> The other page allocation failures were due to the e1000+TSO
> segmentation offload issue.
>
> I use OSS sound drivers with 2.6.9.
>
> Here are the options I use and have been using for quite some time
> without error:
>
> 1] <*> Open Sound System (DEPRECATED)
> 2] <*> OSS sound modules
> 3] [*] Verbose initialisation
> 4] [*] Persistent DMA buffers
> 5] <*> Crystal CS4232 based (PnP) cards
>
> My LILO append line as is follows:
> append="cs4232=0x530,5,1,0,388,5 mce video=atyfb:1600x1200-16@60"
>
> What happened to the page allocation / memory subsystem in 2.6.9?
> I do not recall getting these with 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8 or
> 2.6.8.1.
>

These failures are actually harmless and not entirely unexpected.
That path should tell the allocator not to produce warnings on
failure.

The issue is being actively worked on in the -mm kernels, and the
important stuff should get into 2.6.10.

However, earlier kernels had a bug that prevented a large amount
of ZONE_DMA memory from being allocated by GFP_KERNEL allocations
which is probably why this particular path hasn't been a problem
before. This actually won't be completely reverted in 2.6.10, however
the correct way to get this behaviour is with "lower zone protection"
which Andrea had been working on... so things may happen soon.

2004-11-12 14:20:58

by Marcelo Tosatti

[permalink] [raw]
Subject: Re: Non-e1000, 2.6.9 page allocation failures with OSS/audio.

On Fri, Nov 12, 2004 at 11:18:01PM +1100, Nick Piggin wrote:
> Justin Piszcz wrote:
> >The other page allocation failures were due to the e1000+TSO
> >segmentation offload issue.
> >
> >I use OSS sound drivers with 2.6.9.
> >
> >Here are the options I use and have been using for quite some time
> >without error:
> >
> >1] <*> Open Sound System (DEPRECATED)
> >2] <*> OSS sound modules
> >3] [*] Verbose initialisation
> >4] [*] Persistent DMA buffers
> >5] <*> Crystal CS4232 based (PnP) cards
> >
> >My LILO append line as is follows:
> >append="cs4232=0x530,5,1,0,388,5 mce video=atyfb:1600x1200-16@60"
> >
> >What happened to the page allocation / memory subsystem in 2.6.9?
> >I do not recall getting these with 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8 or
> >2.6.8.1.
> >
>
> These failures are actually harmless and not entirely unexpected.
> That path should tell the allocator not to produce warnings on
> failure.
>
> The issue is being actively worked on in the -mm kernels, and the
> important stuff should get into 2.6.10.
>
> However, earlier kernels had a bug that prevented a large amount
> of ZONE_DMA memory from being allocated by GFP_KERNEL allocations
> which is probably why this particular path hasn't been a problem
> before. This actually won't be completely reverted in 2.6.10, however
> the correct way to get this behaviour is with "lower zone protection"
> which Andrea had been working on... so things may happen soon.

Well, the zone->protection code is in the tree but disable by default
(Andrea's lowmem_reserve effectively enables/adjusts it, apart from changing
"protection" to "lowmem_reserve", etc).

The zone protection setup code doesnt configure any protection
for DMA zone with reference to GFP_KERNEL allocations.
It only sets up protection with reference to HIGH zone, I think.

There must be some reasoning to explain why its disable now?

Who wrote the zone->protection code, Andrew?