[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 

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.


More information about the linux-dvb mailing list