AC3 passthrough na sterownikach OSS w kernelu 2.6.x



Jeżeli probowałeś używać wyjścia SP/DIF SB Live! na sterownikach OSS w kernel 2.6.x, to na pewno zauważyłeś, ze logi systemowe wypełniają się ostrzeżeniami. Powodem jest nieprawidłowa konstrukcja jednej z sekcji krytycznych sterownika SB Live. Przykładowy komunikat w logu wygląda tak:
bad: scheduling while atomic!
Call Trace:
[<c01187b5>] schedule+0x575/0x580
[<c013776f>] mempool_free+0x4f/0xb0
[<c0118b8f>] interruptible_sleep_on+0x4f/0x90
[<c0118810>] default_wake_function+0x0/0x20
[<c02339bd>] pt_wait_for_write+0x4d/0x90
[<c0233a39>] pt_putblock+0x39/0x110
[<c0233d34>] emu10k1_pt_write+0x1a4/0x2e0
[<c022b5cf>] emu10k1_audio_write+0x29f/0x2f0
[<c022b330>] emu10k1_audio_write+0x0/0x2f0
[<c014fd68>] vfs_write+0xb8/0x130
[<c010e4da>] do_gettimeofday+0x1a/0xb0
[<c014fe92>] sys_write+0x42/0x70
[<c0108f37>] syscall_call+0x7/0xb
Oto mój prosty patch na kernel - używam i działa na wszystkich kernelach 2.6.x do tej pory.

Oczywiście wiem, że OSS jest przestarzały;-) . Ale jakoś tak te sterowniki lepiej mi chodzą niż ALSA. No i kiedy próbowałem ALSA'e koło wersji kernela 2.6.1, nie działało mi AC3. Nie to nie, nie będę się prosił.
Wróć