Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: problems with dmxSctFilterParams and NEWSTRUCT



ok from my simple understanding of the error messages, which probably
isn't correct, it seems that something is taking too long in the interrupt
context, so a scheduler call is made (from the preempt patch no doubt)

The reasons for the delay aren't entirely obvious, but I suspect it is
related to the spinlock dmxdevfilter->dev->lock.  If this theory is true,
something is holding onto this lock longer in the NEWSTRUCT branch than in
the old driver.

solutions?

One solution might be to modify the preempt patch to not try to perform a
scheduler run while some process is in interrupt context.  This kindda
defeats the purpose of the preempt patch, so another solution might be
needed.

Another solution would involve seriously examining the code to see if it
is optimized enough and how long do we really need to hold the lock.  This
is probably the best solution.

Another solution would be to go through the code and pick good
opportunities to run the scheduler.  This might not be the best solution,
Linus might not approve of that approach.

Let us be clear that I am not trying to start a battle over preempt v
lowlatency v nothing, I am merely opening the topic for discussion and to
see if a solution can be found.  If this theory is sound, I do not know
the code well enough to find the lock hogs.  Perhaps the latency tools
might be able to shed some light.

_J

In the new year, Jeremy Hall wrote:
> 
> Hi,
> 
> Mine looks like this:
> 
> _J
> 
> [jhall@neserve0.corp.us.uu.net(tcsh):57] cat dvb-crash
> ksymoops 2.4.1 on i686 2.4.19-rc1.  Options used
>      -V (default)
>      -k /proc/ksyms (default)
>      -l /proc/modules (default)
>      -o /lib/modules/2.4.19-rc1/ (default)
>      -m /boot/System.map (specified)
> 
> Warning (compare_maps): ksyms_base symbol
> pci_hp_change_slot_info_R__ver_pci_hp_change_slot_info not found in
> System.map.  Ignoring ksyms_base entry
> Warning (compare_maps): ksyms_base symbol
> pci_hp_deregister_R__ver_pci_hp_deregister not found in
> System.map.  Ignoring ksyms_base entry
> Warning (compare_maps): ksyms_base symbol
> pci_hp_register_R__ver_pci_hp_register not found in System.map.  Ignoring
> ksyms_base entry
> Warning (compare_maps): mismatch on symbol usb_devfs_handle  , usbcore
> says e1823c74, /lib/modules/2.4.19-rc1/kernel/drivers/usb/usbcore.o says
> e1823734.  Ignoring /lib/modules/2.4.19-rc1/kernel/drivers/usb/usbcore.o
> entry
> cpu: 0, clocks: 2655417, slice: 1327708
> cpu: 0, clocks: 2655398, slice: 1327699
> kernel BUG at sched.c:701!
> invalid operand: 0000
> CPU:    0
> EIP:    0010:[<c0115dbf>]    Not tainted
> Using defaults from ksymoops -t elf32-i386 -a i386
> EFLAGS: 00010082
> eax: 00000018   ebx: c15b8000   ecx: fffff797   edx: c15b8000
> esi: e1d8a190   edi: 00000002   ebp: c15b9f14   esp: c15b9ef0
> ds: 0018   es: 0018   ss: 0018
> Process ksoftirqd_CPU0 (pid: 3, stackpage=c15b9000)
> Stack: c02e8c1e c15b8000 e1d8a190 00000002 c0254f7a dfdfbe18 00000000
> c15b8000
>        ddfe8000 c15b9f20 c011612c c15b8000 c15b9f48 c0116221 00001228
> e1d8a128
>        e1d96228 e1d8a190 00000001 00000001 00000282 00000003 dcf66000
> e18339e6
> Call Trace: [<c0254f7a>] [<c011612c>] [<c0116221>] [<e18339e6>]
> [<e18545c2>]
>    [<e185c988>] [<c011de56>] [<c011dc9d>] [<c011e169>] [<c0107198>]
> Code: 0f 0b bd 02 16 8c 2e c0 83 c4 04 8b 4d f8 83 79 1c 00 7c 1d
> 
> >>EIP; c0115dbf <schedule+5f/3b0>   <=====
> Trace; c0254f7a <__scsi_end_request+12a/140>
> Trace; c011612c <preempt_schedule+1c/30>
> Trace; c0116221 <__wake_up+e1/f0>
> Trace; e18339e6 <[dvb-core]DmxDevSectionCallback+326/330>
> Trace; e18545c2 <[dvb-ttpci]debiirq+272/4c0>
> Trace; e185c988 <[dvb-ttpci]av7110_irq_tasklet+38/70>
> Trace; c011de56 <tasklet_action+46/70>
> Trace; c011dc9d <do_softirq+6d/e0>
> Trace; c011e169 <ksoftirqd+89/b0>
> Trace; c0107198 <kernel_thread+28/40>
> Code;  c0115dbf <schedule+5f/3b0>
> 00000000 <_EIP>:
> Code;  c0115dbf <schedule+5f/3b0>   <=====
>    0:   0f 0b                     ud2a      <=====
> Code;  c0115dc1 <schedule+61/3b0>
>    2:   bd 02 16 8c 2e            mov    $0x2e8c1602,%ebp
> Code;  c0115dc6 <schedule+66/3b0>
>    7:   c0 83 c4 04 8b 4d f8      rolb   $0xf8,0x4d8b04c4(%ebx)
> Code;  c0115dcd <schedule+6d/3b0>
>    e:   83 79 1c 00               cmpl   $0x0,0x1c(%ecx)
> Code;  c0115dd1 <schedule+71/3b0>
>   12:   7c 1d                     jl     31 <_EIP+0x31> c0115df0
> <schedule+90/3b0>
> 
>  <0>Kernel panic: Aiee, killing interrupt handler!
> cpu: 0, clocks: 2655417, slice: 1327708
> 
> 4 warnings issued.  Results may not be reliable.
> [jhall@neserve0.corp.us.uu.net(tcsh):58]
> 
> In the new year, Jeremy Hall wrote:
> > Hi,
> > 
> > I have spent the last hour or so trying to get the output you have
> > requested.  I have concluded it is quite difficult to get it because the
> > sysrq stuff does not seem to log the information it dumps to the
> > screen.  I am sure the sysrq commands are  being recognized because I can
> > force the machine to reboot.
> > 
> > The last thing I am trying is 
> > 
> > cat /proc/kmsg >file
> > 
> > and killing klogd before doing that.
> > 
> > nope, it refuses to give me the needed logging.  I need another volounteer
> > to find this.  either that or a better way to get the information that is
> > required.
> > 
> > _J
> > 
> > In the new year, Holger Waechtler wrote:
> > [Charset ISO-8859-1 unsupported, filtering to ASCII...]
> > > Hi,
> > > 
> > > Jaakko Hyv_tti wrote:
> > > >   For what it is worth, I can confirm that letting EPG scan channels after
> > > > the inactivity timeout kills the DVB NEWSTRUCT drivers.  In my case
> > > > make rmmod; make insmod solves the driver lockup.  I am using vdr-1.1.8 as
> > > > the later versions lock up the machine quite quickly and I am too lazy to
> > > > find out why.
> > > 
> > > could please one of you try to find out where exactly it hangs? When you 
> > > caused a lockup, use alt-sysrq-p (in the context of the locked process) 
> > > or alt-sysrq-t to generate the call trace for the dead process and then 
> > > please collect the symbol names for the EIP and call trace adresses.
> > > 
> > > You have to enable the sysrq key in your kernel config to let this work.
> > > 
> > > A list of symbol names including those of the loaded modules you can 
> > > generate using
> > > 
> > > $ cat /proc/ksyms | sort | less
> > > 
> > > thanks for your help,
> > > 
> > > Holger
> > > 
> > 
> > 
> > -- 
> > I do not get viruses because I do not use MS software.
> > If you use Outlook then please do not put my email address in your
> > address-book so that WHEN you get a virus it won't use my address in the
> > >From field.
> > 
> > 
> > -- 
> > Info:
> > To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.
> > 
> 
> 
> -- 
> I do not get viruses because I do not use MS software.
> If you use Outlook then please do not put my email address in your
> address-book so that WHEN you get a virus it won't use my address in the
> >From field.
> 
> 
> -- No attachments (even text) are allowed --
> -- Type: text/plain
> -- Desc: dvb-crash
> 
> 
> 
> -- 
> Info:
> To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.
> 


-- 
I do not get viruses because I do not use MS software.
If you use Outlook then please do not put my email address in your
address-book so that WHEN you get a virus it won't use my address in the
From field.


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index