[linux-dvb] budget-av/CI-interface with SMP

Oliver Endriss o.endriss at gmx.de
Fri Aug 17 04:04:14 CEST 2007


Julian Scheel wrote:
> Am Donnerstag 16 August 2007 13:12 schrieb Julian Scheel:
> > 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
> >  =======================

Same problem as before: Must not sleep within spinlock-ed code.

> > If I disable nobusyloop the errors are gone. I will check if the CI-module
> > keeps working properly.
> 
> If I disable nobusyloop the system becomes unresponsive after a while without 
> CAM plugged.

Does the machine freeze completely? No error messages on the console?

Does it work with CAM plugged, or does it freeze, too?

Please post the patch you are currently using.

CU
Oliver

-- 
----------------------------------------------------------------
VDR Remote Plugin 0.3.9: http://www.escape-edv.de/endriss/vdr/
----------------------------------------------------------------




More information about the linux-dvb mailing list