AnsweredAssumed Answered

Spurious interrupt issue in USB-OTG role switch functionality

Question asked by Chaitanya Dhere on Jul 27, 2015
Latest reply on Dec 4, 2017 by Johnny Yang

Hello,

I am working on IMX6 solo based platform. In the OTG driver provided as a part of 3.10.17 kernel, spurious interrupt issue observed.

 

The steps to reproduce this issue is as follows:

1. Connect a pen drive to the OTG port.

2. Change the role to host by using the following command: echo host > /sys/kernel/debug/ci_hdrc.0/role,

a spurious interrupt is observed.

 

The Log is as follows:

irq 75: nobody cared (try booting with the "irqpoll" option)

CPU: 0 PID: 476 Comm: sh Tainted: G        W  O 3.10.17-1.0.0_ga+g33597e3 #2

[<80013800>] (unwind_backtrace+0x0/0x134) from [<80011e80>] (show_stack+0x10/0x14)

[<80011e80>] (show_stack+0x10/0x14) from [<8007151c>] (__report_bad_irq.isra.6+0x24/0xf4)

[<8007151c>] (__report_bad_irq.isra.6+0x24/0xf4) from [<800717cc>] (note_interrupt+0x178/0x230)

[<800717cc>] (note_interrupt+0x178/0x230) from [<8006fa38>] (handle_irq_event_percpu+0x10c/0x190)

[<8006fa38>] (handle_irq_event_percpu+0x10c/0x190) from [<8006fb20>] (handle_irq_event+0x64/0x94)

[<8006fb20>] (handle_irq_event+0x64/0x94) from [<80072550>] (handle_fasteoi_irq+0x88/0x174)

[<80072550>] (handle_fasteoi_irq+0x88/0x174) from [<8006f170>] (generic_handle_irq+0x2c/0x3c)

[<8006f170>] (generic_handle_irq+0x2c/0x3c) from [<8000f4a4>] (handle_IRQ+0x38/0x84)

[<8000f4a4>] (handle_IRQ+0x38/0x84) from [<8000852c>] (gic_handle_irq+0x2c/0x54)

[<8000852c>] (gic_handle_irq+0x2c/0x54) from [<8000e800>] (__irq_svc+0x40/0x70)

Exception stack(0xa82cbd40 to 0xa82cbd88)

bd40: 00000001 00007bcb 00000100 a82ca000 00000040 00000036 00000000 80e4e3c0

bd60: a82ca000 00000002 00000000 00000000 80e4e380 a82cbd88 00000000 8002b8f0

bd80: 20000113 ffffffff

[<8000e800>] (__irq_svc+0x40/0x70) from [<8002b8f0>] (__do_softirq+0xbc/0x1ec)

[<8002b8f0>] (__do_softirq+0xbc/0x1ec) from [<8002bab8>] (do_softirq+0x4c/0x54)

[<8002bab8>] (do_softirq+0x4c/0x54) from [<8002bd10>] (irq_exit+0x58/0x90)

[<8002bd10>] (irq_exit+0x58/0x90) from [<8000f4a8>] (handle_IRQ+0x3c/0x84)

[<8000f4a8>] (handle_IRQ+0x3c/0x84) from [<8000852c>] (gic_handle_irq+0x2c/0x54)

[<8000852c>] (gic_handle_irq+0x2c/0x54) from [<8000e800>] (__irq_svc+0x40/0x70)

Exception stack(0xa82cbe10 to 0xa82cbe58)

be00:                                     a8a7ce10 80dedd50 a82cbe68 000001a4

be20: 80dedd50 a8a7ce10 c097a140 00000198 00010005 00000002 00000000 00000000

be40: 00000000 a82cbe58 80331b14 8026d5b0 20000113 ffffffff

[<8000e800>] (__irq_svc+0x40/0x70) from [<8026d5b0>] (device_create_file+0x18/0x90)

[<8026d5b0>] (device_create_file+0x18/0x90) from [<80331b14>] (ehci_run+0x1e0/0x22c)

[<80331b14>] (ehci_run+0x1e0/0x22c) from [<80321718>] (usb_add_hcd+0x234/0x7b4)

[<80321718>] (usb_add_hcd+0x234/0x7b4) from [<803408f4>] (host_start+0xd0/0x1a8)

[<803408f4>] (host_start+0xd0/0x1a8) from [<80340e10>] (ci_role_write+0xbc/0x138)

[<80340e10>] (ci_role_write+0xbc/0x138) from [<800c2be4>] (vfs_write+0xb4/0x194)

[<800c2be4>] (vfs_write+0xb4/0x194) from [<800c315c>] (SyS_write+0x3c/0x78)

[<800c315c>] (SyS_write+0x3c/0x78) from [<8000ec00>] (ret_fast_syscall+0x0/0x30)

handlers:

[<8033ba38>] ci_irq

Disabling IRQ #75

 

What is the possible solution for this issue ? Is there any fix ?

Thanks,

Chaitanya

Outcomes