Port-macppc archive

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

Re: tstile lockups - side note



I'm not familar with audio at all, but isn't it dangerous to access
I2C (== slow serial bus) from interrupt context, and a sping mutex
held ... ?

On Sat, Jun 29, 2013 at 10:10 PM, Martin Husemann 
<martin%duskware.de@localhost> wrote:
> On Sat, Jun 29, 2013 at 02:12:53AM +0000, Christos Zoulas wrote:
>> >If you want to reproduce it, just boot any kernel with LOCKDEBUG and
>> >do "cat /dev/audio".  Boom.
>> >
>>
>> That looks like snapper-specific. What is the lockdebug message? It could
>> be that we need to make the mutex in ki2c.c a spin mutex.
>
> I can reproduce it and have serial console:
>
> # dd if=/dev/zero of=/dev/audio bs=1 count=1
> Mutex error: lockdebug_barrier: spin lock held
>
> lock address : 0x000000003f9adb34 type     :               spin
> initialized  : 0x000000000047f418
> shared holds :                  0 exclusive:                  1
> shares wanted:                  0 exclusive:                  0
> current cpu  :                  0 last held:                  0
> current lwp  : 0x000000003f8c4380 last held: 0x000000003f8c4380
> last locked* : 0x0000000000190b44 unlocked : 0x000000000018d52c
> owner field  : 000000000000000000 wait/spin:                0/1
>
> panic: LOCKDEBUG
> Stopped in pid 7.1 (dd) at      netbsd:cpu_Debugger+0x10:       lwz     r0, 
> 0x14
> (r1)
> 0x102ce2f0: at db_panic+0xe8
> 0x102ce310: at vpanic+0x13c
> 0x102ce340: at panic+0x4c
> 0x102ce380: at lockdebug_abort1+0xdc
> 0x102ce3a0: at mutex_enter+0x490
> 0x102ce400: at ki2c_i2c_acquire_bus+0x10
> 0x102ce410: at tas3004_write+0x94
> 0x102ce430: at snapper_set_rate+0x2b4
> 0x102ce460: at snapper_trigger_input+0x6c
> 0x102ce4d0: at audiostartr+0x7c
> 0x102ce4e0: at audiosetinfo+0x8c8
> 0x102cea80: at audio_set_defaults+0xe8
> 0x102ceb30: at audio_open+0x214
> 0x102cebf0: at audioopen+0xb8
> 0x102cec30: at cdev_open+0x98
> 0x102cec60: at spec_open+0x1f8
> 0x102cecc0: at VOP_OPEN+0x4c
> 0x102cecf0: at vn_open+0x1e0
> 0x102cedc0: at do_open+0x100
> 0x102cee40: at do_sys_openat+0x8c
> 0x102cee80: at sys_open+0x28
> 0x102ceeb0: at syscall+0xe0
> 0x102cef20: user SC trap #5 by 0xfde30adc: srr1=0xd032
>             r1=0xffffddd0 cr=0x28000088 xer=0 ctr=0xfde30ad4
>
> The lock is initialized here:
>
> db{0}> x/i 0x000000000047f418
> netbsd:snapper_attach+0x254:    lwz     r3, 0x0(r31)
>
> last locked is:
> db{0}> x/i 0x0000000000190b44
> netbsd:audiosetinfo+0x32c:      or      r3, r31, r31
>
>
> Martin


Home | Main Index | Thread Index | Old Index