freebsd-nq/sys/dev/uart
Thomas Moestl 89eef2de47 It seems that clearing the MCR_IE bit in the modem control register
does not reliably prevent the triggering of interrupts for all supported
configurations. Thus, the FIFO size probe could cause an interrupt,
which could lead to an interrupt storm in the shared interrupt case.

To prevent this, change ns8250_bus_probe() to use the overflow bit in
the line status register instead of the RX ready bit in the interrupt
identification register to detect whether the FIFO has filled up.
This allows us to clear all bits in the interrupt enable register during
the probe, which should prevent interrupts reliably.
Additionally, the detected FIFO size may be a bit more accurate, because
the overflow bit is only set when the FIFO did actually fill up, while
interrupts would trigger a bit early.

Reviewed and tested on a lot of hardware by:	marcel
2004-05-26 21:59:01 +00:00
..
uart_bus_acpi.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus_ebus.c In uart_ebus_probe(), match "su_pnp" besides "su" for ns8250 family 2004-04-03 23:02:02 +00:00
uart_bus_isa.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus_pccard.c Move to generating pccarddevs.h on the fly, both for the kernel and 2004-05-26 00:53:10 +00:00
uart_bus_pci.c Sometimes cardbus attachments don't attach, so while we track down 2003-11-28 05:28:29 +00:00
uart_bus_puc.c Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_bus.h Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00
uart_core.c When the interrupt cannot be INTR_FAST, it still is INTR_MPSAFE. 2004-05-04 05:54:02 +00:00
uart_cpu_alpha.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_amd64.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_i386.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_ia64.c Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_cpu_pc98.c - Initialize uart_bus_space_io and uart_bus_space_mem. 2004-05-16 14:12:05 +00:00
uart_cpu_sparc64.c To quote submitter: 2004-04-04 05:06:26 +00:00
uart_cpu.h Introduce the hw.uart.console and hw.uart.dbgport environment variables 2004-03-20 02:14:02 +00:00
uart_dev_i8251.c In uart_intr() loop until all interrupts have been handled. Previously 2003-09-17 03:11:32 +00:00
uart_dev_i8251.h
uart_dev_ns8250.c It seems that clearing the MCR_IE bit in the modem control register 2004-05-26 21:59:01 +00:00
uart_dev_ns8250.h
uart_dev_sab82532.c Don't mask TCD in IMR0 when we initialize the channel. Doing so makes 2004-04-25 04:30:40 +00:00
uart_dev_sab82532.h
uart_dev_z8530.c Fix hangs caused by z8530_bus_ipend() returning UART_IPEND_TXIDLE 2004-05-04 06:58:10 +00:00
uart_dev_z8530.h
uart_if.m Add locking to the hardware drivers. I intended to figure out more 2003-09-17 01:41:21 +00:00
uart_kbd_sun_tables.h Add a uart attachment/syscons keyboard driver for sun keyboards. In theory 2003-11-11 07:33:24 +00:00
uart_kbd_sun.c Call kbd_attach() only when KBD_INSTALL_CDEV is enabled as the function 2004-04-02 05:59:06 +00:00
uart_kbd_sun.h Add a uart attachment/syscons keyboard driver for sun keyboards. In theory 2003-11-11 07:33:24 +00:00
uart_subr.c Fix braino in previous commit: getenv() can return NULL. 2004-03-20 08:38:33 +00:00
uart_tty.c Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
uart.h Revert the introduction of iobase in struct uart_bas. Both the SAB82532 2003-09-26 05:14:56 +00:00