PROBLEM: additional serial ports on MS9830 board do not work (IRQ problems)

From: Jan Kandziora
Date: Sun Sep 05 2010 - 14:09:18 EST


Hello,

Summary: additional serial ports on MS9830 board do not work
Keywords: serial
Kernel version: 2.6.35.4

I have problems with the IRQs of a MS9830 Mini ITX board. The board has 1
serial port on a DB9 connector and 4 additional ones on internal connectors,
which can also be powered. The computer has a touchscreen controller
connected to one of those internal ports.

The internal ports seem to be special as they don't work correctly. Depending
on BIOS settings, I either don't get any IRQs from them or I get IRQs but the
serial driver doesn't claim them.

To make the bug hunt simpler, I disabled all ports but one of the internal
ones, which I've set to 0x3F8/IRQ4. Then I open the port with "od /dev/ttyS0"
and touch the screen. After some seconds I get

<3>irq 4: nobody cared (try booting with the "irqpoll" option)
<4>Pid: 3923, comm: exe Not tainted 2.6.35.4 #1
<4>Call Trace:
<4> [<c103a950>] __report_bad_irq+0x2e/0x6f
<4> [<c103aa81>] note_interrupt+0xf0/0x147
<4> [<c103b042>] handle_level_irq+0x6d/0x99
<4> [<c1003b32>] handle_irq+0x1a/0x20
<4> [<c1003883>] do_IRQ+0x33/0x75
<4> [<c1002b69>] common_interrupt+0x29/0x30
<4> [<c101d8c8>] ? __do_softirq+0x34/0xca
<4> [<c101d983>] do_softirq+0x25/0x2a
<4> [<c101da43>] irq_exit+0x28/0x57
<4> [<c10038b0>] do_IRQ+0x60/0x75
<4> [<c1002b69>] common_interrupt+0x29/0x30
<4> [<c103007b>] ? timecompare_offset+0x9c/0x2c6
<4> [<c103a3ec>] ? __setup_irq+0x1d8/0x259
<4> [<c103a510>] request_threaded_irq+0xa3/0xd0
<4> [<c119f173>] ? serial8250_interrupt+0x0/0xb2
<4> [<c119ec07>] serial8250_startup+0x3f5/0x53d
<4> [<c119bfa9>] uart_startup+0x6e/0x101
<4> [<c119ca89>] uart_open+0xff/0x2ac
<4> [<c114fee7>] ? tty_init_dev+0xb7/0xf0
<4> [<c11501ab>] tty_open+0x28b/0x354
<4> [<c106336e>] chrdev_open+0xc0/0xd7
<4> [<c1060141>] __dentry_open+0xd1/0x1a7
<4> [<c10602ad>] nameidata_to_filp+0x29/0x3d
<4> [<c10632ae>] ? chrdev_open+0x0/0xd7
<4> [<c1068a92>] do_last+0x3d1/0x4d1
<4> [<c106a13f>] do_filp_open+0x17c/0x41e
<4> [<c10124c0>] ? do_page_fault+0x2a1/0x2cf
<4> [<c105ff43>] do_sys_open+0x48/0x116
<4> [<c1060053>] sys_open+0x1e/0x26
<4> [<c1002650>] sysenter_do_call+0x12/0x26
<3>handlers:
<3>[<c119f173>] (serial8250_interrupt+0x0/0xb2)
<0>Disabling IRQ #4
<4>ttyS0: 1 input overrun(s)
<6>usb 4-1: new full speed USB device using uhci_hcd and address 2
<4>ttyS0: 10 input overrun(s)

in dmesg and some data from the touch controller. But it's very jumpy without
interrupts, hardly useable.

I tried the suggested option "irqpoll", but then the computer just freezes
when I do "od /dev/ttyS0" and touch the screen. No kernel panic, just a hard
freeze. I tried "acpi=noirq", "acpi=off" and disabling the APIC in the BIOS
setup, too. None of these made the serial irq work.

Can you give me any useful pointers what to try next? Kernel configuration is
attached.

Kind regards

Jan

Attachment: config.gz
Description: GNU Zip compressed data