Okay. I did some experimentation on my box this am. What follows is what
happens and my interpretation of it. First some general stuff:
patch -- referring to the one I put together that enables the alternative
interupt detection code -- it, and various recompiled stock Debian kernels
with it applied are available at "whitehead.apmaths.uwo.ca/~tyson".
"ctrl+c" -- as first discovered up by Bob or Michael, under some
configurations, interupting "aplay" results in the kernel barfing a bunch of
messages such as:
----------------------------------------------------------------
bad page state in process 'aplay'
page:fffffc00002a02b8 flags:0x0000000000000414 mapping:0000000000000000
mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
fffffc0004977c98 0000000000000000 0000000000000000 0000000000000000
fffffc0001056e34 0000000000000400 fffffc00002a02b8 fffffc00002a02b8
fffffc00014bfed8 0000020000026000 fffffc0001057250 0000000000000000
fffffc00002a02b8 000000000000001e fffffc000105a3f0 fffffc00014bfed8
fffffc00002a02b8 0000000000000000 fffffc0005d24088 0000020000026000
fffffc0001068dbc fffffc00002a02b8 0000000000063309 0000020000022000
Trace:
[<fffffc0001056e34>] free_pages_check+0x64/0x9c
[<fffffc0001057250>] free_hot_cold_page+0x54/0xf0
[<fffffc000105a3f0>] __page_cache_release+0x80/0xa0
[<fffffc0001068dbc>] free_page_and_swap_cache+0x28/0x40
[<fffffc0001060fa0>] unmap_vmas+0x3d4/0x548
[<fffffc00010642a8>] unmap_region+0xb0/0x124
[<fffffc000106461c>] do_munmap+0x1b8/0x260
[<fffffc00010649a4>] sys_munmap+0x5c/0x88
[<fffffc0001011354>] entSys+0xa4/0xc0
----------------------------------------------------------------
With that out of the way, here are the results:
Kernel 2.6.14:
"snd-es18xx isa-pnp=0"
stock -- loads, but interupts aren't recognized and playback loops
patched -- loads, and works fine
"snd-sb8 port=0x220 irq=5 dma8=1"
stock -- loads, and works fine
Kernel 2.6.16
"snd-es18xx isa-pnp=0"
stock -- loads, but interupts aren't recognized and playback loops
patched -- haven't recompiled yet (but others report "ctrl+c" problems)
"snd-sb8 port=0x220 irq=5 dma8=1"
stock -- loads, and works, but has "ctrl+c" problems
There are three things that stand out here to me on this:
1 -- Something broke between kernels 2.6.14 and 2.6.16, and it is resulting
in pages being left in an inconsistent state if alsa playback is not properly
deinitialized (probably something to do with driver mmaping)
2 -- The stock snd-es18xx is not able to properly detect interupts
3 -- The snd-sb8 driver works fine
This is good news. I didn't even know the snd-sb8 driver existed until a
couple of days ago when I went looking. Now as soon as some kernel hackers
figure out what broke between 2.6.14 and 2.6.16 and is causing one, I won't
have to custom compile any more kernels! : )
The one downside to the more generic snd-sb8 driver appears to be that it
cannot reconfigure which irq it runs on (unlike the snd-es18xx driver which
seems to be able to reconfigure various aspects of the card in software).
Later! -T
PS#1: By udev not working on earlier kernels, I wasn't referring to unaligned
traps, I meant that it really does not work (due to the switch for execing
the user land interace to talking over net sockets).
PS#2: I resolved the dependency requires/conflict problem in the 2.6.14
kernel package on my box. Unfortunately, the latest version of udev now
appears to require 2.5.15 or higher (which is why my box didn't come back up
from my last remote reboot) -- I'll compile up some 2.6.16 packages.
--
Tyson Whitehead (-twhitehe at uwo.ca -- WSC-)
Computer Engineer Dept. of Applied Mathematics,
Graduate Student- Applied Mathematics University of Western Ontario,
GnuPG Key ID# 0xF7666BFF London, Ontario, Canada
Attachment:
pgpghNFzFaMaQ.pgp
Description: PGP signature