linux/drivers
Ryan Bradetich a137ce8536 [PARISC] Define port->timeout to fix a long msleep in mux.c
This commit is in response to a bug reported by Vesa on the irc channel
a couple of weeks ago.

The bug was that the console would apparently hang (not return) while
using the mux console.

The root cause of this bug is that bash (with readline support) makes a
call to the tcsetattr() glibc function with the argument TCSADRAIN.  This
causes the serial core in the kernel use the uart_wait_until_sent() to be
called. This function verifies the mux transmit queue is empty or calls the
msleep_interruptable() with a calculated timeout value that is dependant
upon the port->timeout variable.

The real problem here is that the port->timeout was not defined so it
was defaulted to 0 and the timeout calculation performs the following
calculation:

char_time = (port->timeout - HZ/50) / port->fifosize;

where char_time is an unsigned long. Since the serial Mux does not use
interrupts, the msleep_interruptable() function waits until the timeout
has been reached ... and when the port->timeout < HZ/50 this timeout will
be a long time. (I have validated that the console will eventually
return ... but it takes quite a while for this to happen).

This patch simply sets the port->timeout on the Mux to HZ/50 to avoid
this long timeout period.

Signed-off-by: Ryan Bradetich <rbrad@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
2005-11-17 16:38:28 -05:00
..
acorn [ARM] Turn ARM RiscPC PCF8583 i2c RTC driver into a proper module 2005-10-30 19:07:59 +00:00
acpi [PATCH] move pm_register/etc. to CONFIG_PM_LEGACY, pm_legacy.h 2005-11-13 18:14:10 -08:00
atm [ATM]: [horizon] fix sparse warnings 2005-11-10 12:55:52 -08:00
base [PATCH] fix leaks in request_firmware_nowait 2005-11-13 18:14:17 -08:00
block [PATCH] cciss_scsi warning fix 2005-11-15 08:59:20 -08:00
bluetooth [Bluetooth]: Add endian annotations to the core 2005-11-08 09:57:21 -08:00
cdrom [PATCH] drivers/cdrom: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
char [PATCH] ipmi: bump-driver-version 2005-11-15 08:59:19 -08:00
connector [PATCH] Process Events Connector 2005-11-07 07:53:35 -08:00
cpufreq [PATCH] cpu hotplug: fix locking in cpufreq drivers 2005-11-09 07:55:50 -08:00
crypto [PATCH] CONFIG_IA32 2005-10-30 17:37:10 -08:00
dio [PATCH] drivers/dio: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
eisa [PATCH] drivers/eisa: kmalloc + memset -> kzalloc conversion 2005-11-07 07:53:59 -08:00
fc4 [PATCH] kfree cleanup: misc remaining drivers 2005-11-07 07:54:05 -08:00
firmware [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reason 2005-11-09 07:55:57 -08:00
hwmon Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-11-11 09:24:26 -08:00
i2c [PATCH] Fix IXP4xx I2C driver build breakage 2005-11-17 11:23:48 -08:00
ide [IDE] Add driver for Sibyte Swarm evaluation board 2005-11-17 16:23:50 +00:00
ieee1394 [PATCH] ieee1394: fix-up schedule_timeout() usage 2005-11-07 07:53:57 -08:00
infiniband [PATCH] PCI: removed unneeded .owner field from struct pci_driver 2005-11-10 16:09:17 -08:00
input Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-11-11 09:24:26 -08:00
isdn [PATCH] hfc_usb: fix usb device table 2005-11-15 08:59:19 -08:00
macintosh macintosh: Always export pmu_[un]register_sleep_notifier if CONFIG_PM set 2005-11-08 12:14:50 +11:00
mca [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
md [PATCH] md: make md threads interruptible again 2005-11-15 08:59:19 -08:00
media [DVB] cinergyT2: cinergyt2_register_rc() should return 0 on success 2005-11-16 00:11:50 -08:00
message [PATCH] drivers/message/fusion/mptbase.c: make code static 2005-11-09 07:56:41 -08:00
mfd [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
misc Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-11-11 09:24:26 -08:00
mmc [MMC] mmci doesn't need asm/irq.h 2005-11-12 17:26:21 +00:00
mtd [MTD] maps: Replace dependency on non existing config option 2005-11-13 19:30:44 +01:00
net [PATCH] ipw2200: fix error log offset calculation 2005-11-17 08:32:58 -08:00
nubus
oprofile
parisc [PARISC] Add IRQ affinities 2005-11-17 16:28:37 -05:00
parport [PATCH] kfree cleanup: misc remaining drivers 2005-11-07 07:54:05 -08:00
pci [PATCH] shpchp_hpc build fix 2005-11-13 18:14:12 -08:00
pcmcia [PCMCIA] inform user of insertion and ejection events 2005-11-12 23:35:34 +01:00
pnp [PATCH] drivers/pnp/: cleanups 2005-11-07 07:54:09 -08:00
rapidio [PATCH] rapidio: message interface updates 2005-11-07 07:53:47 -08:00
s390 [PATCH] s390: mail address changed 2005-11-11 08:26:22 -05:00
sbus [SPARC]: Fix RTC compat ioctl kernel log spam. 2005-11-12 12:10:54 -08:00
scsi [libata sata_mv] SATA probe, DMA boundary fixes 2005-11-17 10:59:48 -05:00
serial [PARISC] Define port->timeout to fix a long msleep in mux.c 2005-11-17 16:38:28 -05:00
sh [PATCH] superhyway: multiple block support and VCR rework 2005-11-07 07:53:28 -08:00
sn
tc [MIPS] zs.c: Resurrect the deceased zs.c for now. 2005-11-17 16:23:39 +00:00
telephony [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reason 2005-11-09 07:55:57 -08:00
usb [PATCH] USB: add the anydata usb-serial driver 2005-11-17 11:29:55 -08:00
video [PATCH] make vesafb build without CONFIG_MTRR 2005-11-13 18:14:21 -08:00
w1 [PATCH] kfree cleanup: misc remaining drivers 2005-11-07 07:54:05 -08:00
zorro [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
Kconfig
Makefile [PATCH] RapidIO support: core base 2005-11-07 07:53:46 -08:00