Re: Problem of g_serial

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

 



On Tue, Jan 12, 2010 at 8:14 PM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, 12 Jan 2010 11:39:41 +0800
> Cliff Cai <cliffcai.sh@xxxxxxxxx> wrote:
>
>> Hi all,
>>
>> Recently, I ran into a problem of running g_serial,that is kernel
>> crashes when running "cat myfile > /dev/ttyGS0"
>
> Which kernel, which architecture, what kind of crash, what diagnostics
> are displayed when it crashes ?

Kernel:2.6.32,arch:Blackfin,see the crash information.
the test works fine with 2.6.28.
on 2.6.32,echoing character string to /dev/ttyGS0 works, I've tried to
echo out a 200 characters string.
and also catting a small file to /dev/ttyGS0  works.
but if cat a big file,it will cause the crash.

>
>> When low_latency is disabled,tty_flip_buffer_push(tty) will hire a
>> work queue to push the buffer,obviously,this is a deferred job.
>> So, it's not proper  to wake up the read thread right after calling
>> tty_flip_buffer_push().I have few knowledge about tty stuff.
>> Does anyone here could give some hints on this problem?
>
> low_latency should only be set if
> - You are queuing data from a context that can sleep
> - Your queueing path can cope with callbacks into your transmit path

g_serial calls tty_flip_buffer_push(tty) in a tasklet context,So
low_latency should not be set.
otherwise there will be a "scheduling while atomic" error.

Cliff

root:/> cat /etc/boa.conf > /dev/ttyGS0
NULL pointer access
Kernel OOPS in progress
Deferred Exception context
CURRENT PROCESS:
COMM=events/0 PID=5 CPU=0
invalid mm
return address: [0x02c2181a]; contents of:
0x02c217f0:  0c00  1807  e14a  001f  e10a  62b0  9110  0040
0x02c21800:  6c66  0127  0538  0010  3210  0578  0167  6fa6
0x02c21810:  e512  0041  0037  61f8  0040 [9110] 0c00  181a
0x02c21820:  304a  e120  0048  e14a  02c2  5001  e10a  0148

ADSP-BF527-0.0 525(MHz CCLK) 131(MHz SCLK) (mpu off)
Linux version 2.6.32.3-ADI-2010R1-pre-svn8127 (cliff@debiancliff) (gcc
version 4.1.2 (ADI svn)) #1136 Wed Jan 13 23:24:33 CST0

SEQUENCER STATUS:               Not tainted
 SEQSTAT: 00000027  IPEND: 8008  IMASK: 003f  SYSCFG: 0006
  Peripheral interrupts masked off
  Kernel interrupts masked off
  EXCAUSE   : 0x27
  physical IVG3 asserted : <0xffa00698> { _trap + 0x0 }
  physical IVG15 asserted : <0xffa00ec4> { _evt_system_call + 0x0 }
  logical irq   6 mapped  : <0xffa00334> { _bfin_coretmr_interrupt + 0x0 }
  logical irq  13 mapped  : <0x000a0c40> { _bfin_t350mcqb_irq_error + 0x0 }
  logical irq  15 mapped  : <0x00114150> { _err_handler + 0x0 }
  logical irq  21 mapped  : <0x000e6880> { _bfin_rtc_interrupt + 0x0 }
  logical irq  23 mapped  : <0x001133d4> { _rx_handler + 0x0 }
  logical irq  24 mapped  : <0x00113370> { _tx_handler + 0x0 }
  logical irq  27 mapped  : <0x000e909c> { _bfin_twi_interrupt_entry + 0x0 }
  logical irq  31 mapped  : <0x000ad7fc> { _bfin_serial_dma_rx_int + 0x0 }
  logical irq  32 mapped  : <0x000ade8c> { _bfin_serial_dma_tx_int + 0x0 }
  logical irq  35 mapped  : <0x000c9560> { _bfin_mac_interrupt + 0x0 }
  logical irq  59 mapped  : <0x000dfd20> { _blackfin_interrupt + 0x0 }
 RETE: <0x00000000> /* Maybe null pointer? */
 RETN: <0x02027e54> /* kernel dynamic memory (maybe user-space) */
 RETX: <0x00000480> /* Maybe fixed code section */
 RETS: <0x000a5520> { _process_echoes + 0x38 }
 PC  : <0x02c2181a> { :g_serial:_usb_gadget_get_string + 0x5f6 }
DCPLB_FAULT_ADDR: <0x00000000> /* Maybe null pointer? */
ICPLB_FAULT_ADDR: <0x02c2181a> { :g_serial:_usb_gadget_get_string + 0x5f6 }
PROCESSOR STATE:
 R0 : 0000003f    R1 : 0000ffc0    R2 : 00000000    R3 : 00000000
 R4 : 00000000    R5 : 00000000    R6 : 00000073    R7 : 0000ffff
 P0 : ffa008f0    P1 : 02bd5c00    P2 : 00000000    P3 : 02c26536
 P4 : 02bd5c00    P5 : 02bd5c00    FP : 02027e74    SP : 02027d78
 LB0: 0009544c    LT0: 0009544a    LC0: 00000000
 LB1: 00036356    LT1: 000362da    LC1: 0000000b
 B0 : 00000000    L0 : 00000000    M0 : ffffffac    I0 : 00000008
 B1 : 00000000    L1 : 00000000    M1 : 00000000    I1 : 02bd9940
 B2 : 00000000    L2 : 00000000    M2 : 00000000    I2 : 00000000
 B3 : 00000000    L3 : 00000000    M3 : 00000000    I3 : 00000000
A0.w: 00000008   A0.x: 00000000   A1.w: 00000008   A1.x: 00000000
USP : 00000000  ASTAT: 02003005

Hardware Trace:
   0 Target : <0x00004f24> { _trap_c + 0x0 }
     Source : <0xffa0062c> { _exception_to_level5 + 0xa4 } CALL pcrel
   1 Target : <0xffa00588> { _exception_to_level5 + 0x0 }
     Source : <0xffa0043c> { _bfin_return_from_exception + 0x18 } RTX
   2 Target : <0xffa00424> { _bfin_return_from_exception + 0x0 }
     Source : <0xffa004e0> { _ex_trap_c + 0x74 } JUMP.S
   3 Target : <0xffa0046c> { _ex_trap_c + 0x0 }
     Source : <0xffa006f2> { _trap + 0x5a } JUMP (P4)
   4 Target : <0xffa00698> { _trap + 0x0 }
     Source : <0x02c21818> { :g_serial:_usb_gadget_get_string + 0x5f4 } STI R0
   5 Target : <0x02c21808> { :g_serial:_usb_gadget_get_string + 0x5e4 }
     Source : <0x000a726a> { _tty_write_room + 0xa } JUMP (P2)
   6 Target : <0x000a7260> { _tty_write_room + 0x0 }
     Source : <0x000a551c> { _process_echoes + 0x34 } CALL pcrel
   7 Target : <0x000a551a> { _process_echoes + 0x32 }
     Source : <0x00163e80> { _mutex_lock + 0x38 } RTS
   8 Target : <0x00163e54> { _mutex_lock + 0xc }
     Source : <0x00163676> { __cond_resched + 0x1a } RTS
   9 Target : <0x0016365c> { __cond_resched + 0x0 }
     Source : <0x00163e50> { _mutex_lock + 0x8 } CALL pcrel
  10 Target : <0x00163e48> { _mutex_lock + 0x0 }
     Source : <0x000a5516> { _process_echoes + 0x2e } CALL pcrel
  11 Target : <0x000a550e> { _process_echoes + 0x26 }
     Source : <0x00163e80> { _mutex_lock + 0x38 } RTS
  12 Target : <0x00163e54> { _mutex_lock + 0xc }
     Source : <0x00163676> { __cond_resched + 0x1a } RTS
  13 Target : <0x0016365c> { __cond_resched + 0x0 }
     Source : <0x00163e50> { _mutex_lock + 0x8 } CALL pcrel
  14 Target : <0x00163e48> { _mutex_lock + 0x0 }
     Source : <0x000a550a> { _process_echoes + 0x22 } CALL pcrel
  15 Target : <0x000a5502> { _process_echoes + 0x1a }
     Source : <0x000a54f6> { _process_echoes + 0xe } IF !CC JUMP
Kernel Stack
Stack info:
 SP: [0x02027dd8] <0x02027dd8> /* kernel dynamic memory (maybe user-space) */
 FP: (0x02027e3c)
 Memory from 0x02027dd0 to 02028000
02027dd0: 00000000  00000000 [00000000] 00000000  00000000  00000000
00000000  00000000
02027df0: 00000000  ffffffac  00000000  00000000  02bd9940  00000008
00000000  02027e74
02027e10: 02bd5c00  02bd5c00  02c26536  00000000  02bd5c00  ffa008f0
0000ffff  00000073
02027e30: 00000000  00000000  00000000 (00000000)<0000ffc0> 0000003f
0000003f  ffa008f0
02027e50: 00000006  ffffffc0  00000000  02c26435 <000a5520> 000000b6
0000000a  02c26535
02027e70: 00000073  02c26435 <000a6590> 02bd5c00  0000000a  02c26536
000000b6  00000073
02027e90: 00000000  029357cf  0009544c  029357ce  0009544a  00000000
00000000  00000008
02027eb0: 00000000  00000008  00000000  00000000  00000000  00000000
00000000  00000000
02027ed0: 00000000  00000000  00000000  00000000  00000000  00000000
ffffffac  00000000
02027ef0: 00000000  02bd7150  02c1ffed  00000000  02026000  02bd5c00
02001a60  02c285e0
02027f10: 000a6294  02001a60  02001a60  02c2691c  0000ffff  02026000
<000a8dba> 02bd5c00
02027f30: 02001a60  02c285e0  02c2651c  0000ffff  00000000  00000000
02c1ffed  00000000
02027f50: 00000000  000000cf <0001e340> 02bd5ca4  02001a60  000a8cbc
001f62b0  02027fa4
02027f70: 02027fa4  00000000  00000000  00000000  00000000 <0001e822>
02001a60  0001e7ac
02027f90: 00000000  02001a68  0000ffff  02026000  02026000  00000000
02018040  00021014
02027fb0: 02027fb0  02027fb0 <00020e5e> 0201bf40  02001a60  00000000
00000000  00020e04
02027fd0: 00001490  00000000  00000000  02027fdc  02027fdc <00001496>
00000000  00000000
02027ff0: 00000000  00000000  ffffffff  00000006
Return addresses in stack:
   frame  1 : <0x0000ffc0> { _copy_mm + 0x1c }
    address : <0x000a5520> { _process_echoes + 0x38 }
    address : <0x000a6590> { _n_tty_receive_buf + 0x2fc }
    address : <0x000a8dba> { _flush_to_ldisc + 0xfe }
    address : <0x0001e340> { _run_workqueue + 0x6c }
    address : <0x0001e822> { _worker_thread + 0x76 }
    address : <0x00020e5e> { _kthread + 0x5a }
    address : <0x00001496> { _kernel_thread_helper + 0x6 }
Modules linked in: g_serial
Kernel panic - not syncing: Kernel exception
Hardware Trace:
Stack info:
 SP: [0x02027c90] <0x02027c90> /* kernel dynamic memory (maybe user-space) */
 FP: (0x02027d4c)
 Memory from 0x02027c90 to 02028000
02027c90:[001a5bfc]<00011324> 02027d78  001a5bfc  001e84ce  001e84ce
001e84ce  02027ccc
02027cb0: 02027ccc <0000529a> 02027d78  ffe02014  02c26536  001a56cc
<0003185e> 0000003f
02027cd0: ffffffff  00000100  02c26535  0003000b <00031a54> 001fb7b4
<00031ac8> 001ecdec
02027cf0: 00000024  02026000  00000001  00000024  00000100  00000101
00000004  00000100
02027d10:<0001589c><0002ee0a> 0000000a  02c26533  0000ffff <000304dc>
001f9330  02027e74
02027d30:<ffa002ee> 001fd74c  02bd5c00  02c26535  00000006  00000000
00000000 (00000000)
02027d50:<00015cee><ffa00630> 001e5000  00008008  00000027  00000000
00000000  0000003b
02027d70:<ffa00b68> 00000480  00000480  00008008  00000027  00000000
02027e54  00000480
02027d90: 02c2181a <000a5520> 0000003f  02003005  00036356  0009544c
000362da  0009544a
02027db0: 0000000b  00000000  00000008  00000000  00000008  00000000
00000000  00000000
02027dd0: 00000000  00000000  00000000  00000000  00000000  00000000
00000000  00000000
02027df0: 00000000  ffffffac  00000000  00000000  02bd9940  00000008
00000000  02027e74
02027e10: 02bd5c00  02bd5c00  02c26536  00000000  02bd5c00  ffa008f0
0000ffff  00000073
02027e30: 00000000  00000000  00000000  00000000 <0000ffc0> 0000003f
0000003f  ffa008f0
02027e50: 00000006  ffffffc0  00000000  02c26435 <000a5520> 000000b6
0000000a  02c26535
02027e70: 00000073  02c26435 <000a6590> 02bd5c00  0000000a  02c26536
000000b6  00000073
02027e90: 00000000  029357cf  0009544c  029357ce  0009544a  00000000
00000000  00000008
02027eb0: 00000000  00000008  00000000  00000000  00000000  00000000
00000000  00000000
02027ed0: 00000000  00000000  00000000  00000000  00000000  00000000
ffffffac  00000000
02027ef0: 00000000  02bd7150  02c1ffed  00000000  02026000  02bd5c00
02001a60  02c285e0
02027f10: 000a6294  02001a60  02001a60  02c2691c  0000ffff  02026000
<000a8dba> 02bd5c00
02027f30: 02001a60  02c285e0  02c2651c  0000ffff  00000000  00000000
02c1ffed  00000000
02027f50: 00000000  000000cf <0001e340> 02bd5ca4  02001a60  000a8cbc
001f62b0  02027fa4
02027f70: 02027fa4  00000000  00000000  00000000  00000000 <0001e822>
02001a60  0001e7ac
02027f90: 00000000  02001a68  0000ffff  02026000  02026000  00000000
02018040  00021014
02027fb0: 02027fb0  02027fb0 <00020e5e> 0201bf40  02001a60  00000000
00000000  00020e04
02027fd0: 00001490  00000000  00000000  02027fdc  02027fdc <00001496>
00000000  00000000
02027ff0: 00000000  00000000  ffffffff  00000006
Return addresses in stack:
    address : <0x00011324> { _panic + 0x48 }
    address : <0x0000529a> { _trap_c + 0x376 }
    address : <0x0003185e> { _rcu_check_quiescent_state + 0xe }
    address : <0x00031a54> { ___rcu_process_callbacks + 0x38 }
    address : <0x00031ac8> { _rcu_process_callbacks + 0x2c }
    address : <0x0001589c> { ___do_softirq + 0x7c }
    address : <0x0002ee0a> { _handle_IRQ_event + 0x3e }
    address : <0x000304dc> { _handle_simple_irq + 0x68 }
    address : <0xffa002ee> { _asm_do_IRQ + 0x36 }
   frame  1 : <0x00015cee> { _irq_enter + 0xa }
    address : <0xffa00630> { _exception_to_level5 + 0xa8 }
    address : <0xffa00b68> { __common_int_entry + 0x64 }
    address : <0x000a5520> { _process_echoes + 0x38 }
    address : <0x0000ffc0> { _copy_mm + 0x1c }
    address : <0x000a5520> { _process_echoes + 0x38 }
    address : <0x000a6590> { _n_tty_receive_buf + 0x2fc }
    address : <0x000a8dba> { _flush_to_ldisc + 0xfe }
    address : <0x0001e340> { _run_workqueue + 0x6c }
    address : <0x0001e822> { _worker_thread + 0x76 }
    address : <0x00020e5e> { _kthread + 0x5a }
    address : <0x00001496> { _kernel_thread_helper + 0x6 }
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux