Re: AVerTV Volar Black HD: i2c oops in warm state on mips

2009-06-09 Thread Jan Nikitenko
Solved with [PATCH] af9015: fix stack corruption bug.

Best regards,
Jan
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


AVerTV Volar Black HD: i2c oops in warm state on mips

2009-06-05 Thread Jan Nikitenko

Hi,

I am trying to get AverMedia AVerTV Volar Black HD (A850) usb dvb-t tuner
running on mips32 little endian platform (to stream dvb-t from home router on 
LAN).
I've cross compiled v4l-dvb mercurial sources (revision 11448:d4274bbb8605) and
when plugging the tuner stick, I get following kernel oops log on serial 
console:

dvb-usb: found a 'AverMedia AVerTV Volar Black HD (A850)' in cold state, will
try to load a firmware
usb 1-1: firmware: requesting dvb-usb-af9015.fw
dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
dvb-usb: found a 'AverMedia AVerTV Volar Black HD (A850)' in warm state.
dvb-usb: will use the device's hardware PID filter (table count: 32).
DVB: registering new adapter (AverMedia AVerTV Volar Black HD (A850))

CPU 0 Unable to handle kernel paging request at virtual address , epc ==
803a4488, ra == c049a1c8
Oops[#1]:
Cpu 0
$ 0   :  10003c00  803a4468
$ 4   : 8f17c600 8f067b30 0002 0038
$ 8   : 0001 8faf3e98 11da000d 09010002
$12   :    000a
$16   : 8f17c600 8f067b68 8faf3c00 8f067c04
$20   : 8f067b9c 0100 8f067bf0 80104100
$24   :  2aba9fb0
$28   : 8f066000 8f067af0 802cbc48 c049a1c8
Hi: 
Lo: 
epc   : 803a4488 i2c_transfer+0x20/0x104
Not tainted
ra: c049a1c8 af9013_read_reg+0x78/0xc4 [af9013]
Status: 10003c03KERNEL EXL IE
Cause : 00808008
BadVA : 
PrId  : 03030200 (Au1550)
Modules linked in: af9013 dvb_usb_af9015(+) dvb_usb dvb_core firmware_class
i2c_au1550 au1550_spi
Process modprobe (pid: 2757, threadinfo=8f066000, task=8fade098, tls=2aad6470)
Stack : c049f5e0 80163090 805ba880 0100 8f067bf0 d733 8f067b68 8faf3c00
8f067c04 c049a1c8 80163bc0 8056a630 8f067b40 80163224 80569fc8 8f0033d7
0038 80140003 8f067b2c 00010038 c0420001 8f067b28 c049f5e0 0004
0004 c049a524 c049d5a8 c049d5a8  803a6700  8f17c600
c042a7a4 8f17c600 c042a7a4 c049c924   0002 613a6c00
...
Call Trace:
[803a4488] i2c_transfer+0x20/0x104
[c049a1c8] af9013_read_reg+0x78/0xc4 [af9013]
[c049a524] af9013_read_reg_bits+0x2c/0x70 [af9013]
[c049c924] af9013_attach+0x98/0x65c [af9013]
[c04257bc] af9015_af9013_frontend_attach+0x214/0x67c [dvb_usb_af9015]
[c03e2428] dvb_usb_adapter_frontend_init+0x20/0x12c [dvb_usb]
[c03e1ad8] dvb_usb_device_init+0x374/0x6b0 [dvb_usb]
[c0426120] af9015_usb_probe+0x4fc/0xfcc [dvb_usb_af9015]
[80381024] usb_probe_interface+0xbc/0x218
[803227fc] driver_probe_device+0x12c/0x30c
[80322a80] __driver_attach+0xa4/0xac
[80321ed0] bus_for_each_dev+0x60/0xd0
[8032162c] bus_add_driver+0x1e8/0x2a8
[80322cdc] driver_register+0x7c/0x17c
[80380d30] usb_register_driver+0xa0/0x12c
[c042e030] af9015_usb_module_init+0x30/0x6c [dvb_usb_af9015]
[8010d2a4] __kprobes_text_end+0x3c/0x1f4
[80167150] sys_init_module+0xb8/0x1cc
[80102370] stack_done+0x20/0x3c


Code: afb10018  703f  00808021 8c43 703f  1060002d  00c09021
8f830014  3c02efff


The used dvb-t sources work ok on intel x86 platform (used kernel 2.6.24), but
on mips, there seems to be some problem with i2c after switch of the tuner into
the warm state via firmware load (tested with 2.6.25.17 and 2.6.29-rc7 mips
kernels, with the same result) - it seems to me, that adap pointer (or the
structure) is not valid (adap-algo is NULL):

(gdb) c
Continuing.

Breakpoint 1, i2c_transfer (adap=0x8f17c600, msgs=0x8f067b30, num=2)
at /usr/src/linux/drivers/i2c/i2c-core.c:1036
1036if (adap-algo-master_xfer) {
(gdb) p *msgs
$4 = {addr = 56, flags = 0, len = 3, buf = 0x8f0c9b2c ×3}
(gdb) p *adap
$2 = {owner = 0x0, id = 0, class = 0, algo = 0x0, algo_data = 0x0,
client_register = 0, client_unregister = 0, level = 0 '\0',
  bus_lock = {count = {counter = 0}, wait_lock = {raw_lock = {No data
fields}}, wait_list = {next = 0xc042a00c, prev = 0x8fb55000}},
  clist_lock = {count = {counter = 1}, wait_lock = {raw_lock = {No data
fields}}, wait_list = {next = 0x1, prev = 0x1}},
  timeout = -1894267336, retries = -1894267336, dev = {klist_children = {k_lock
= {raw_lock = {No data fields}}, k_list = {next = 0x1,
prev = 0x8f17c644}, get = 0x8f17c644, put = 0}, knode_parent = {n_klist
= 0x0, n_node = {next = 0x0, prev = 0x4}, n_ref = {
refcount = {counter = -1069368724}}}, knode_driver = {n_klist = 0x0,
n_node = {next = 0x0, prev = 0x0}, n_ref = {refcount = {
  counter = 0}}}, knode_bus = {n_klist = 0x1, n_node = {next =
0x8f17c674, prev = 0x8f17c674}, n_ref = {refcount = {
  counter = 1}}}, parent = 0x8f17c680, kobj = {name = 0x8f17c680
\200Ć\027\217\200Ć\027\217, entry = {next = 0x0, prev = 0x0},
  parent = 0x8fb3f494, kset = 0x8fb3f494, ktype = 0x8031f5b0, sd =
0x8031e8e8, kref = {refcount = {counter = -1883942816}},
  state_initialized = 0, state_in_sysfs = 0, state_add_uevent_sent = 1,
state_remove_uevent_sent = 0},
bus_id = \034Đ\004\217\001, '\0' repeats 14 times, uevent_suppress = 0,

Re: AVerTV Volar Black HD: i2c oops in warm state on mips

2009-06-05 Thread Patrick Boettcher

Hi Jan,

On Fri, 5 Jun 2009, Jan Nikitenko wrote:
The used dvb-t sources work ok on intel x86 platform (used kernel 2.6.24), 
but
on mips, there seems to be some problem with i2c after switch of the tuner 
into

the warm state via firmware load (tested with 2.6.25.17 and 2.6.29-rc7 mips
kernels, with the same result) - it seems to me, that adap pointer (or the
structure) is not valid (adap-algo is NULL):

[..]

Tried two mips32 little endian platforms: Broadcom BCM3302 /asus wl500gp 
router/

and alchemy au1550 with the same result.

Any ideas why this happens?


At some point in time, someone said, that using stack-allocated buffers 
for USB transfers is not cross-platform-save. IIRC, it was on 
MIPS-platforms where this became obvious.


I haven't looked into the af-driver, but I guess that's the problem here.

regards,
Patrick.

--
  Mail: patrick.boettc...@desy.de
  WWW:  http://www.wi-bw.tfh-wildau.de/~pboettch/
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: AVerTV Volar Black HD: i2c oops in warm state on mips

2009-06-05 Thread Antti Palosaari

Terve Jan,

On 06/05/2009 10:52 AM, Jan Nikitenko wrote:

Hi,

I am trying to get AverMedia AVerTV Volar Black HD (A850) usb dvb-t tuner
running on mips32 little endian platform (to stream dvb-t from home
router on LAN).

[..]

DVB: registering new adapter (AverMedia AVerTV Volar Black HD (A850))

CPU 0 Unable to handle kernel paging request at virtual address


[..]


Tried two mips32 little endian platforms: Broadcom BCM3302 /asus wl500gp
router/
and alchemy au1550 with the same result.

Any ideas why this happens?


Looks like it fails when demodulator is attached - af9013_attach(). 
Unfortunately I am not familiar those Oops dumps or debugs :( And I 
don't have such hw to reproduce the problem. Is that possible that you 
can try to examine more and even fix problem?


Lets try first comment out all i2 read / write operations (reg_read, 
reg_write) from af9013_attach. Then test if any operation can be done 
without crash. All register operations from af9013 goes to the 
af9015_i2c_xfer() function. You can try to catch error from there also. 
I hope this helps you. Good luck! :)


regards
Antti
--
http://palosaari.fi/
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html