[linux-dvb] budget-av/CI-interface with SMP
Julian Scheel
julian at jusst.de
Thu Aug 16 13:12:06 CEST 2007
Am Donnerstag 09 August 2007 20:34 schrieb Oliver Endriss:
> Well, that's not surprising.
> If you set uselocks=1, ttpci_budget_debiread/write must not sleep,
> i.e. you have to set nobusyloop=0. Does it work now?
>
> Nevertheless I don't like busy looping with interrupts disabled.
> AFAICS the budget_debi routines are never called from interrupt context,
> so it should be sufficient to use spin_[un]lock_bh() instead of
> spin_[un]lock_irq_save(). Could you please try this?
When I switch from irq-lock to bh-lock while keeping uselocks = 1, the error
changes:
BUG: scheduling while atomic: kdvb-ca-0:0/0x00000101/28258
[<c03c51a6>] __sched_text_start+0x56/0x7a4
[<c012c4bd>] lock_timer_base+0x15/0x2f
[<c012c5c9>] __mod_timer+0x94/0x9e
[<c03c6054>] schedule_timeout+0x70/0x8d
[<c03c5869>] __sched_text_start+0x719/0x7a4
[<c012bbfd>] process_timeout+0x0/0x5
[<c012c5e0>] msleep+0xd/0x12
[<e0b5fe23>] saa7146_wait_for_debi_done+0xda/0xec [saa7146]
[<e0b7378c>] ttpci_budget_debiread+0x44/0xce [budget_core]
[<e0c0528b>] ciintf_poll_slot_status+0x99/0x146 [budget_av]
[<e0c432d0>] dvb_ca_en50221_check_camstatus+0x37/0xae [dvb_core]
[<e0c44493>] dvb_ca_en50221_thread+0x1c7/0xb24 [dvb_core]
[<c0134be4>] autoremove_wake_function+0x0/0x35
[<c012deb4>] do_notify_parent+0x155/0x160
[<c011d46b>] deactivate_task+0x19/0x23
[<c016071f>] __fput+0x112/0x13c
[<c0125b8f>] put_files_struct+0x64/0xa7
[<c0127072>] do_exit+0x6a9/0x6ad
[<c03c8a61>] do_page_fault+0x277/0x525
[<c03c9612>] kprobe_flush_task+0x4b/0x80
[<c012118f>] schedule_tail+0x4f/0x87
[<c0103d46>] ret_from_fork+0x6/0x1c
[<e0c442cc>] dvb_ca_en50221_thread+0x0/0xb24 [dvb_core]
[<c0104a37>] kernel_thread_helper+0x7/0x10
=======================
If I disable nobusyloop the errors are gone. I will check if the CI-module
keeps working properly.
-Julian
More information about the linux-dvb
mailing list