Exception caused by imx6 external interrupt

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Exception caused by imx6 external interrupt

723 Views
864535720
Contributor II

Exception caused by imx6 external interrupt
Hello everyone, our chip is IMX6D. When we use the EIM bus to expand the serial port, there are 4 external interrupts to notify the CPU to send and receive data. During our test, it was found that the following problems would occasionally occur in the external interrupt part of the drive:

20200605 014655 irq 321: nobody cared (try booting with the "irqpoll" option)
20200605 014655 CPU: 0 PID: 350 Comm: uart_on_off Tainted: G O 3.14.52-1.1.1_ga #993
20200605 014655 [<80014a68>] (unwind_backtrace) from [<80011758>] (show_stack+0x10/0x14)
20200605 014655 [<80011758>] (show_stack) from [<8065ebe0>] (dump_stack+0x7c/0xbc)
20200605 014655 [<8065ebe0>] (dump_stack) from [<80066510>] (__report_bad_irq+0x28/0xc4)
20200605 014655 [<80066510>] (__report_bad_irq) from [<80066a80>] (note_interrupt+0x260/0x2b0)
20200605 014655 [<80066a80>] (note_interrupt) from [<800647a4>] (handle_irq_event_percpu+0x118/0x180)
20200605 014655 [<800647a4>] (handle_irq_event_percpu) from [<80064848>] (handle_irq_event+0x3c/0x5c)
20200605 014655 [<80064848>] (handle_irq_event) from [<800671f0>] (handle_level_irq+0x98/0x104)
20200605 014655 [<800671f0>] (handle_level_irq) from [<80063e54>] (generic_handle_irq+0x2c/0x3c)
20200605 014655 [<80063e54>] (generic_handle_irq) from [<802ae0a4>] (mxc_gpio_irq_handler+0x38/0x100)
20200605 014655 [<802ae0a4>] (mxc_gpio_irq_handler) from [<802ae1ec>] (mx3_gpio_irq_handler+0x80/0xd8)
20200605 014655 [<802ae1ec>] (mx3_gpio_irq_handler) from [<80063e54>] (generic_handle_irq+0x2c/0x3c)
20200605 014655 [<80063e54>] (generic_handle_irq) from [<8000ed4c>] (handle_IRQ+0x40/0x90)
20200605 014655 [<8000ed4c>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)
20200605 014655 [<8000856c>] (gic_handle_irq) from [<80012240>] (__irq_svc+0x40/0x70)
20200605 014655 Exception stack(0xacd7bbd8 to 0xacd7bc20)
20200605 014655 bbc0: 00000000 00404000
20200605 014655 bbe0: 80a85ec0 00000000 00000202 0000e080 00008458 000060d8 acd7a020 600c0013
20200605 014655 bc00: 00000141 00500001 80014130 acd7bc20 8002d984 8002d994 200c0113 ffffffff
20200605 014655 [<80012240>] (__irq_svc) from [<8002d994>] (__do_softirq+0xc8/0x248)
20200605 014655 [<8002d994>] (__do_softirq) from [<8002ddd4>] (irq_exit+0xb8/0xf4)
20200605 014655 [<8002ddd4>] (irq_exit) from [<8000ed50>] (handle_IRQ+0x44/0x90)
20200605 014655 [<8000ed50>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)
20200605 014655 [<8000856c>] (gic_handle_irq) from [<80012240>] (__irq_svc+0x40/0x70)
20200605 014655 Exception stack(0xacd7bca8 to 0xacd7bcf0)
20200605 014655 bca0: ac0f17dc 600c0013 00000000 00000006 ac0f1780 acb58c00
20200605 014655 bcc0: 00000141 00000000 ac0f17dc 600c0013 00000141 00500001 fffffffa acd7bcf0
20200605 014655 bce0: 80065d00 806635e4 600c0013 ffffffff
20200605 014655 [<80012240>] (__irq_svc) from [<806635e4>] (_raw_spin_unlock_irqrestore+0x20/0x54)
20200605 014655 [<806635e4>] (_raw_spin_unlock_irqrestore) from [<80065d00>] (__setup_irq+0x218/0x4d8)
20200605 014655 [<80065d00>] (__setup_irq) from [<800660ec>] (request_threaded_irq+0xa4/0x124)
20200605 014655 [<800660ec>] (request_threaded_irq) from [<803173b8>] (serial8250_startup+0x80c/0x898)
20200605 014655 [<803173b8>] (serial8250_startup) from [<80313458>] (uart_startup.part.13+0x4c/0x19c)
20200605 014655 [<80313458>] (uart_startup.part.13) from [<80313ee0>] (uart_open+0xe8/0x15c)
20200605 014655 [<80313ee0>] (uart_open) from [<802f953c>] (tty_open+0x164/0x60c)
20200605 014655 [<802f953c>] (tty_open) from [<800d6028>] (chrdev_open+0xa4/0x178)
20200605 014655 [<800d6028>] (chrdev_open) from [<800d08bc>] (do_dentry_open.isra.17+0x110/0x294)
20200605 014655 [<800d08bc>] (do_dentry_open.isra.17) from [<800d0b10>] (finish_open+0x20/0x38)
20200605 014655 [<800d0b10>] (finish_open) from [<800de844>] (do_last.isra.58+0x6e8/0xc40)
20200605 014655 [<800de844>] (do_last.isra.58) from [<800dee50>] (path_openat+0xb4/0x5d8)
20200605 014655 [<800dee50>] (path_openat) from [<800e027c>] (do_filp_open+0x2c/0x88)
20200605 014655 [<800e027c>] (do_filp_open) from [<800d1a80>] (do_sys_open+0x104/0x1c8)
20200605 014655 [<800d1a80>] (do_sys_open) from [<8000e460>] (ret_fast_syscall+0x0/0x38)
20200605 014655 handlers:
20200605 014655 [<80314f58>] serial8250_interrupt
20200605 014655 Disabling IRQ #321

Information about Disabling IRQ #321. It is because the interrupt service function returns IRQ_NONE in most cases before. After I modified the return value, there was no Disabling IRQ #321 prompt.

What I want to understand is why there is a stack exception near __irq_svc?

Labels (2)
0 Kudos
1 Reply

691 Views
igorpadykov
NXP Employee
NXP Employee

Hi 其东 刘

one can try to debug it using suggestions provided on

https://community.nxp.com/thread/500806 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos