Results 1 to 1 of 1
I want to change my serial I/O (/dev/ttyS0) interrupt mode from IO-APIC-edge (as shown in /proc/interrupts) to IO-APIC-level. How can I do that?
The serial port in question (IRQ 4) ...
- 08-19-2009 #1Just Joined!
- Join Date
- Jan 2008
- Posts
- 2
How to change IO-APIC-edge to level?
I want to change my serial I/O (/dev/ttyS0) interrupt mode from IO-APIC-edge (as shown in /proc/interrupts) to IO-APIC-level. How can I do that?
The serial port in question (IRQ 4) is used for a PPP link via slow speed RF path to another computer. It carries heavy full-duplex, CTS/RTS flow-controlled, traffic. In typical use the serial port eventually (after a couple of hours) gets into a state with transmit buffer data available, flow enabled, but nothing being transmitted. I.e. as if an interrupt were lost and the transmitter won't send another byte until it gets a xmt-done interrupt.
As a diagnostic experiment I patched the /drivers/serial/8250.c code to look at the state of the UART_IIR bit just before that interrupt service code returns. When the serial port fails that diagnostic code shows UART_IIR=1, indicating an interrupt is pending but since no further "edges" will be seen the serial port is locked up. The kernel is version 2.6.24 with Linux 5.0.0 (Lenny) system libraries and headers installed.
Thanks for any suggestions, even if it requires a kernel recompile. Been there, done that.
Gene


Reply With Quote
