Mailing List archive

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

[linux-dvb] Re: dvb-bt8xx and net device



Hi Steffen, André,

can you please try again and report if this oops is fixed?

Holger



André Stein wrote:
Hi,


First of all, I always set the MAC address manually because after ifconfig -a dvb0_0 the mac address was always inited to 0.. Then the driver actually never oops. It simply "fucks" up the whole system and I don't know why..

I made a similar approach as you. I tuned and brought the net device up with dvbtune
# dvbtune -f 10773250 -p H -s 22000 -n 251 -i
I get a long list of service available at the Astranet frequence and I try to use the T-DSL proxy service (pid 251). Finally the net device is successfully setup.
# ifconfig dvb0_0 10.0.1.1
and the net device is running.. The mac is also set correctly as I hardcoded it in the add_if net code.
# iptraf -d dvb0_0
gets me lots of UDP packages but before I can actually start the proxy service, the system hangs and nothing can't be done anymore. If you're lucky you get data lost because the hd buffers weren't flushed..

So after that I am pretty sure that this nasty bug isn't related with setting the mac address. As I said before, I always set the mac before using the net device and ifconfig -a dvb0_0 showed me that everything went fine. It must be in some way related to the hardware as you're nova s seems to work and Stefan reported the same problem as me with a pinnacle card.
As you're familiar with the dvb interface, is there a possibilty that a package buffer is flooded with data that actually makes the kernel go nuts?


well, I fear that the actual bug is in the bt8xx driver, somewhere in DMA setup and interrupt handling.

Is your system responding on SysRq-Keys after the lockup? Might it hang in a busy-loop somewhere, maybe in interrupt context? Try e.g. alt-sysrq-t or alt-sysrq-p to get an idea where the kernel is actually hanging. Remove the SA_INTERRUPT flag in request_irq() to enable other interrupts while processing bt878_irq().

In any case you might want to set up a serial console on a second box in order to save the logs.
Things seem to become stranger and stranger while I try the dvb drivers out.. Because I had added some printk's in the net code, I thought it would be a good idea to get a new, vanilla dvb tree. I did that but when I tried the latest drivers out, I couldn't even bring the netdevice up. I got that typical seg fault.
Steffen, could you please try the latest dvb-kernel out and check whether you get the same problem as me?

cpu: 0, clocks: 1993363, slice: 996681
ac97_codec: AC97 Audio codec, id: ??v9(SigmaTel STAC9721/23)
Unable to handle kernel paging request at virtual address 2d343369
c021ddac
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c021ddac>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010212
eax: 0000000a ebx: 00000004 ecx: 00000001 edx: 00000008
esi: 2d343369 edi: ca98f05c ebp: 00000008 esp: cab5bdd4
ds: 0018 es: 0018 ss: 0018
Process dvbtune (pid: 374, stackpage=cab5b000)
Stack: cbde4300 00000000 c02f1c2d c91f2288 c021e235 cbde4300 0000000a 00000004
2d343369 cbde4300 c91f2288 00000005 00000000 c02f1c28 00000202 c02f1c60
00000f14 ca98f000 ca98f000 00001000 c021e41a cbde4300 c91f2288 00000010
Call Trace: [<c021e235>] [<c021e41a>] [<c021e892>] [<c0121e5a>] [<c0219ccd>]
[<c01b7bca>] [<cca271c2>] [<cca24611>] [<cca246cc>] [<cca2019b>] [<c0140e08>]
[<c01370c6>] [<cca2665c>] [<c0137398>] [<c0135ff9>] [<c0135f0e>] [<cca2474b>]
[<cca24680>] [<c0144967>] [<c0106f17>]
Code: f3 a5 f6 c3 02 74 02 66 a5 f6 c3 01 74 01 a4 5b 5e 5f 5d c3


>>EIP; c021ddac <__rta_fill+70/84> <=====

>>edi; ca98f05c <_end+a61d7d8/c4dc7dc>
>>esp; cab5bdd4 <_end+a7ea550/c4dc7dc>

Trace; c021e235 <rtnetlink_fill_ifinfo+31d/3b8>
Trace; c021e41a <rtmsg_ifinfo+32/7c>
Trace; c021e892 <rtnetlink_event+32/38>
Trace; c0121e5a <notifier_call_chain+1e/38>
Trace; c0219ccd <register_netdevice+151/168>
Trace; c01b7bca <register_netdev+5e/70>
Trace; cca271c2 <[dvb-core]__kstrtab_dvb_ringbuffer_avail+d/1d>
Trace; cca24611 <[dvb-core]dvb_net_add_if+139/150>
Trace; cca246cc <[dvb-core]dvb_net_do_ioctl+4c/ac>
Trace; cca2019b <[dvb-core]dvb_usercopy+b3/129>
Trace; c0140e08 <link_path_walk+888/99c>
Trace; c01370c6 <get_chrfops+5a/15c>
Trace; cca2665c <[dvb-core]dvb_device_open+68/dc>
Trace; c0137398 <chrdev_open+64/98>
Trace; c0135ff9 <dentry_open+e1/188>
Trace; c0135f0e <filp_open+52/5c>
Trace; cca2474b <[dvb-core]dvb_net_ioctl+1f/24>
Trace; cca24680 <[dvb-core]dvb_net_do_ioctl+0/ac>
Trace; c0144967 <sys_ioctl+1bb/1f6>
Trace; c0106f17 <system_call+33/38>

Code; c021ddac <__rta_fill+70/84>
00000000 <_EIP>:
Code; c021ddac <__rta_fill+70/84> <=====
0: f3 a5 repz movsl %ds:(%esi),%es:(%edi) <=====
Code; c021ddae <__rta_fill+72/84>
2: f6 c3 02 test $0x2,%bl
Code; c021ddb1 <__rta_fill+75/84>
5: 74 02 je 9 <_EIP+0x9>
Code; c021ddb3 <__rta_fill+77/84>
7: 66 a5 movsw %ds:(%esi),%es:(%edi)
Code; c021ddb5 <__rta_fill+79/84>
9: f6 c3 01 test $0x1,%bl
Code; c021ddb8 <__rta_fill+7c/84>
c: 74 01 je f <_EIP+0xf>
Code; c021ddba <__rta_fill+7e/84>
e: a4 movsb %ds:(%esi),%es:(%edi)
Code; c021ddbb <__rta_fill+7f/84>
f: 5b pop %ebx
Code; c021ddbc <__rta_fill+80/84>
10: 5e pop %esi
Code; c021ddbd <__rta_fill+81/84>
11: 5f pop %edi
Code; c021ddbe <__rta_fill+82/84>
12: 5d pop %ebp
Code; c021ddbf <__rta_fill+83/84>
13: c3 ret


In the case that I get the drivers partly working again, I will put some printk in all dvb net functions so I can trace the last called functions. Unfortunately I could never see any meaningful log output after a system "hang".

Thanks,
-André.




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



Home | Main Index | Thread Index