AnsweredAssumed Answered

PCIe Serial Controller

Question asked by Gabriel Johnson on Jan 14, 2016
Latest reply on Jan 19, 2016 by bpe

Hello,

 

I am working with a custom carrier board for the congatec i.mx6 SOM.  The carrier board has a Exar Corp. Serial Controller XR17V358 connected through PCIe.  I have enabled support for the serial controller through the following menuconfig options:

 

Device Drivers -->

     Character devices -->

          Serial drivers -->

               8250/16550 and compatible serial support (CONFIG_SERIAL_8250)

               8250/16550 PCI device support (CONFIG_SERIAL_8250_PCI)

               (8) Maximum number of 8250/16550 serial ports (CONFIG_SERIAL_8250_NR_UARTS)

               (8) Maximum number of 8250/16550 serial ports to register at runtime (CONFIG_SERIAL_8250_RUNTIME_UARTS)

               Extended 8250/16550 serial driver options (CONFIG_SERIAL_8250_EXTENDED)

                    Support more than 4 legacy serial ports (CONFIG_SERIAL_8250_MANY_PORTS)

                    Support for sharing serial interrupts (CONFIG_SERIAL_8250_SHARE_IRQ)

 

The module seems to load correctly and in dev I have ttyS0 through ttys7.  Using stty on the dev devices original caused and error and I fixed that by following this post Nobody Cared issue .

 

Now when I try to read or write to the serial device the kernel prints out the following messages about an irq issue:

 

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

CPU: 0 PID: 651 Comm: sh Not tainted 3.14.28-1.0.0_qmx6+g644b035 #1

[<800155f0>] (unwind_backtrace) from [<800116d4>] (show_stack+0x10/0x14)

[<800116d4>] (show_stack) from [<806ad1d8>] (dump_stack+0x7c/0xbc)

[<806ad1d8>] (dump_stack) from [<8006a0b8>] (__report_bad_irq+0x28/0xc4)

[<8006a0b8>] (__report_bad_irq) from [<8006a628>] (note_interrupt+0x260/0x2b0)

[<8006a628>] (note_interrupt) from [<8006834c>] (handle_irq_event_percpu+0x118/0x180)

[<8006834c>] (handle_irq_event_percpu) from [<800683f0>] (handle_irq_event+0x3c/0x5c)

[<800683f0>] (handle_irq_event) from [<8006b234>] (handle_fasteoi_irq+0x84/0x14c)

[<8006b234>] (handle_fasteoi_irq) from [<80067a48>] (generic_handle_irq+0x2c/0x3c)

[<80067a48>] (generic_handle_irq) from [<8000ed4c>] (handle_IRQ+0x40/0x90)

[<8000ed4c>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)

[<8000856c>] (gic_handle_irq) from [<800121c0>] (__irq_svc+0x40/0x70)

Exception stack(0xd8867b38 to 0xd8867b80)

7b20:                                                       00000000 00404100

7b40: 80d84e40 00000000 00000282 0000c080 00007458 00005398 d8866000 000080d0

7b60: 00000000 00000000 80014cd0 d8867b80 80031684 80031694 20080113 ffffffff

[<800121c0>] (__irq_svc) from [<80031694>] (__do_softirq+0xc8/0x248)

[<80031694>] (__do_softirq) from [<80031a9c>] (irq_exit+0xb8/0xf4)

[<80031a9c>] (irq_exit) from [<8000ed50>] (handle_IRQ+0x44/0x90)

[<8000ed50>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)

[<8000856c>] (gic_handle_irq) from [<800121c0>] (__irq_svc+0x40/0x70)

Exception stack(0xd8867c08 to 0xd8867c50)

7c00:                   80d82184 00000001 00000000 d8867ca4 00000000 80d82180

7c20: 00000000 00000141 00000001 000080d0 00000000 00000000 00000000 d8867c50

7c40: 80d81080 800a0720 60080013 ffffffff

[<800121c0>] (__irq_svc) from [<800a0720>] (get_page_from_freelist+0x38/0x5b0)

[<800a0720>] (get_page_from_freelist) from [<800a1808>] (__alloc_pages_nodemask+0x128/0x978)

[<800a1808>] (__alloc_pages_nodemask) from [<800a2068>] (__get_free_pages+0x10/0x24)

[<800a2068>] (__get_free_pages) from [<8031fb78>] (uart_startup.part.13+0x148/0x19c)

[<8031fb78>] (uart_startup.part.13) from [<80320504>] (uart_open+0xe8/0x15c)

[<80320504>] (uart_open) from [<80305d80>] (tty_open+0x164/0x60c)

[<80305d80>] (tty_open) from [<800d976c>] (chrdev_open+0xa4/0x178)

[<800d976c>] (chrdev_open) from [<800d4000>] (do_dentry_open.isra.17+0x110/0x294)

[<800d4000>] (do_dentry_open.isra.17) from [<800d4254>] (finish_open+0x20/0x38)

[<800d4254>] (finish_open) from [<800e1f10>] (do_last.isra.58+0x6dc/0xc34)

[<800e1f10>] (do_last.isra.58) from [<800e251c>] (path_openat+0xb4/0x5c8)

[<800e251c>] (path_openat) from [<800e3938>] (do_filp_open+0x2c/0x88)

[<800e3938>] (do_filp_open) from [<800d51c4>] (do_sys_open+0x104/0x1c8)

[<800d51c4>] (do_sys_open) from [<8000e460>] (ret_fast_syscall+0x0/0x30)

handlers:

[<802cbe08>] pcie_pme_irq

Disabling IRQ #155

 

Looking at the i.mx6 datasheet irq 155 is a pcie interrupt.  I am not sure what to look at from this point.  Could the serial controller driver not be handling the interrupt correctly?

 

Thank you for any help.

Outcomes